参数在 $() - jQuery 之外不起作用
Parameter won't work outside of $() - jQuery
我有一个简单的 AJAX 脚本,我很好奇为什么该参数在块之外不起作用$()
:
var loadWork = function(el) { //element which href will be used
var url = $(el).attr('href'); //it doesn't work if 'el' is not in $()
$.get(url, function(data) {
$('#work-gallery').html(data);
});
}
$(document).ready(function() {
loadWork('#work ul li a[href="includes/wdes.html"]')
$('#work ul li a').click(function(evt) {
evt.preventDefault();
var element = $(this);
loadWork(element);
});
});
loadWork
函数的el
(元素的缩写)参数需要位于表达式*var url = ...*
$()
内。为什么当我在函数调用中将其作为变量或文字元素传递时?
你传递一个字符串,所以如果你不把它包装成$()
它只是一个字符串,所以类似于
'#work ul li a[href="includes/wdes.html"]'.attr('xyz')
但这是无稽之谈,因为.attr方法是jqueryObjects的属性,所以使用
$('#work ul li a[href="includes/wdes.html"]')
将选择匹配的 domnode 并将它们包装为 jquery 对象,以便您可以运行 jquery 方法,如 .attr()
您要执行的操作:
"单击#work
内的链接时,加载该链接href
返回到#work-gallery
的任何内容。
对于简单的内容加载作业,有.load()
jQuery函数,它接受一个URL并将返回的HTML放在一个元素中 - 就像你在loadWork()
函数中所做的那样。所以让我们划伤这个功能,它是多余的。
其次,您希望最初加载一些内容。最简单的方法是简单地在其中一个链接上触发单击事件,因为我们已经有了正确的单击处理程序。
$(document).ready(function() {
$('#work a').click(function (e) {
e.preventDefault();
$('#work-gallery').load(this.href);
}).first().click();
});
请注意事件处理程序内部的this
如何指向 DOM 对象,因此您可以直接使用 this.href
,而不是绕道调用 .attr('href')
。
相关文章:
- 自动完成 jquery 不起作用
- 悬停时的Jquery不起作用
- 使用DateTimePicker插件的JQuery不起作用
- 无限滚动jquery不起作用
- 角度2触发器'单击'使用jquery不起作用
- 在 jQuery 不起作用的情况下迭代变量
- 切换下 jquery 不起作用
- 简单的jquery不起作用,并返回错误
- 等效于getElementbyName的jQuery不起作用
- Jquery不起作用,但我想一切都好
- 当按钮从ajax调用时,jquery不起作用
- 在jQuery不起作用的情况下阻止表单提交
- 为什么这个jquery不起作用
- 带有变量选择器的 Jquery 不起作用
- 简单的JavaScript/jQuery不起作用
- Wordpress jquery不起作用(计算系统)
- Django 模板内联 jQuery 不起作用
- 提示计算器 jquery 不起作用
- 追加 jquery 不起作用
- 正则表达式 jQuery 不起作用