是否有任何理由嵌套调用$(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