$($('#newForm_step1')).hide("slide", { direction: "left" }, 0);
和此:
$($($('.breadcrumbs')[0]).children().last()).html("...");
我从未见过以这种方式使用的$
(jQuery
)函数,我想知道是否有任何实际的理由去做这样的事情?据我所知,通过调用$
来包装jQuery对象只是为同一个选择器返回一个jQuery对象,jQuery对象上的方法返回this
,所以我不明白为什么一个需要嵌套调用$
。
答案 0 :(得分:1)
不,没有理由这样做。
在第一个示例中,$($(...))
是多余的。将jQuery对象立即包装在另一个jQuery对象中绝对没有效果。
该行应为
$('#newForm_step1').hide("slide", { direction: "left" }, 0);
在第二个示例中,$(...)[0]
返回一个原始DOM元素,因此在调用jQuery的.children().last()
之前将其重新包装。结果就是jQuery对象,所以没有必要重新包装它,并且"展开"可以通过调用.first()
而不是[0]
来避免。
该行应为
$('.breadcrumbs').first().children().last().html("...");
答案 1 :(得分:0)
没有必要用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包装器来处理jQuery方法。
你必须记住这一点:
JavaScript Object需要链接JavaScript方法:
javascriptObject.javascriptMethods
实施例 -
$('.breadcrumbs')[0].addEventListener();//javascript addEventListener method
jQuery Object需要链接jQuery方法:
jQueryObject.jQueryMethods
实施例 -
$('.breadcrumbs').on();//jQuery on method