两种方法似乎产生相同的结果 http://jsbin.com/owedo/,但我一直很难真正说服人们第二种方法有效,因为它显然并不为人所知。
// Create some data
var foo = { 'vals':[ {'id':'foo'}, {'id':'bar'} ] };
// Common Method
$.each(foo.vals, function(i,o){
alert(this.id);
});
// Alternative (lesser-known?) Method
$(foo.vals).each(function(i,o){
alert(this.id);
});
查了一下来源,这两者似乎是一回事。第二种方法如下:
each: function( callback, args ) {
return jQuery.each( this, callback, args );
}
该方法显然调用了更常见的方法,这意味着它同样合法。这种理解是否正确,还是我在这里遗漏了一些东西?
我通常信任这种方法,因为它不会导致我偏离选择器的标准实践。让我们面对现实吧,我们受过训练可以做到:
$("p").each();
因此,这样做似乎很自然:
$(obj).each();
我错了吗?
两者之间的差异实际上是指数级的,具体取决于您如何使用它。
首先$.each
构成一个single调用函数来启动迭代器。
第二$(foo.vals).each
makes three调用函数来启动迭代器。第一个是到$()
它会生成一个新的 jQuery 包装器集(不确定在此过程中进行了多少其他函数调用)。然后调用$().each
。最后它进行内部调用jQuery.each
启动迭代器。
在您的示例中,至少可以说差异可以忽略不计。但是,在嵌套使用场景中,您可能会发现性能成为一个问题。
最后,jQuery Enlightenment 中的 Cody Lindley 不建议使用$.each
由于涉及函数调用,迭代次数大于 1000。使用正常的for( var i = 0...
loop.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)