这两种方法对produce the same results来说似乎都是一样的,但我一直很难让人们相信第二种方法是有效的,因为它显然并不广为人知。
// 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();我说错了吗?
发布于 2010-02-24 05:04:08
两者之间的差异实际上是指数级的,这取决于您使用它的方式。
第一个$.each构成启动迭代器的单个函数调用。
第二个$(foo.vals).each执行三个函数调用来启动迭代器。第一个是$(),它会生成一个新的jQuery包装器集(不确定在此过程中还进行了多少其他函数调用)。然后调用$().each。最后,它对jQuery.each进行内部调用以启动迭代器。
在您的示例中,这种差异至少可以忽略不计。但是,在嵌套使用场景中,您可能会发现性能成为一个问题。
最后,Cody Lindley在jQuery启迪中不建议对超过1000次的迭代使用$.each,因为涉及到函数调用。使用普通的for( var i = 0...循环。
发布于 2010-02-24 04:55:48
我不确定其他人怎么做,我几乎只使用你的第二种方法says...but。
来自.NET的land...it对我来说更有意义,也让事情更容易阅读。
https://stackoverflow.com/questions/2321520
复制相似问题