是否有任何理由嵌套调用$(jQuery)?
当我遇到这样的代码时,我正在浏览网站的源代码:
$($('#newForm_step1')).hide("slide", { direction: "left" }, 0);
和这个:
$($($('.breadcrumbs')[0]).children().last()).html("...");
我从来没有见过以这种方式使用$
( jQuery
)函数,我想知道是否有任何实际的理由来做这样的事情? 据我所知,用$
调用包装一个jQuery对象只需要为同一个选择器返回一个jQuery对象,并且jQuery对象上的方法返回this
,所以我不明白为什么需要嵌套调用$
。
不,没有理由这样做。
在第一个例子中, $($(...))
是多余的。 立即将jQuery对象包装到另一个jQuery对象中是完全没有影响的。
该行应阅读
$('#newForm_step1').hide("slide", { direction: "left" }, 0);
在第二个例子中, $(...)[0]
返回一个原始DOM元素,所以在jQuery的.children().last()
被调用之前再次包装它。 这个结果已经是一个jQuery对象了,所以不需要重新包装它,通过调用.first()
而不是[0]
可以避免“展开”。
该行应阅读
$('.breadcrumbs').first().children().last().html("...");
没有必要用jQuery包装jQuery对象。 这只会导致相同但过度编码和冗余。
但是当你有DOM对象时,你需要用jQuery来包装,这样它才会成为jQuery对象。
以你为例:
$('.breadcrumbs')[0];//[0] converts to JavaScript Object
现在,如果你想再次使用jQuery,你可以使用jQuery进行换行:
$($('.breadcrumbs')[0]);//is now a jQuery Object
但是这个例子是不必要的,因为你可以这样做:
$('.breadcrumbs:eq(0)');//selects first .breadcrumbs element
但是,如果你有一些DOM Object而不是jQuery对象,那么你需要使用jQuery wrapper来处理jQuery方法。
你必须记住这一点:
JavaScript对象需要链接的JavaScript方法:
javascriptObject.javascriptMethods
EX-
$('.breadcrumbs')[0].addEventListener();//javascript addEventListener method
jQuery对象需要链接jQuery方法:
jQueryObject.jQueryMethods
EX-
$('.breadcrumbs').on();//jQuery on method
链接地址: http://www.djcxy.com/p/80927.html
上一篇: Is there any reason to have nested calls to $ (jQuery)?
下一篇: JavaScript function evaluating itself and calling itself at the same time