首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集合([$.each]) vs $([集合]).each()

集合([$.each]) vs $([集合]).each()
EN

Stack Overflow用户
提问于 2010-02-24 04:36:36
回答 2查看 2.4K关注 0票数 11

这两种方法对produce the same results来说似乎都是一样的,但我一直很难让人们相信第二种方法是有效的,因为它显然并不广为人知。

代码语言:javascript
复制
// 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); 
});

在检查来源时,这两个似乎是相同的。第二种方法如下:

代码语言:javascript
复制
each: function( callback, args ) {
  return jQuery.each( this, callback, args );
}

这个方法显然调用了更广为人知的方法,这意味着它同样合法。这种理解是正确的,还是我在这里漏掉了什么?

我通常信任这个方法,因为它不会使我偏离关于选择器的标准实践。让我们面对它吧,我们被训练去做:

代码语言:javascript
复制
$("p").each();

因此,这样做似乎是很自然的:

代码语言:javascript
复制
$(obj).each();

我说错了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-24 05:04:08

两者之间的差异实际上是指数级的,这取决于您使用它的方式。

第一个$.each构成启动迭代器的单个函数调用。

第二个$(foo.vals).each执行三个函数调用来启动迭代器。第一个是$(),它会生成一个新的jQuery包装器集(不确定在此过程中还进行了多少其他函数调用)。然后调用$().each。最后,它对jQuery.each进行内部调用以启动迭代器。

在您的示例中,这种差异至少可以忽略不计。但是,在嵌套使用场景中,您可能会发现性能成为一个问题。

最后,Cody Lindley在jQuery启迪中不建议对超过1000次的迭代使用$.each,因为涉及到函数调用。使用普通的for( var i = 0...循环。

票数 13
EN

Stack Overflow用户

发布于 2010-02-24 04:55:48

我不确定其他人怎么做,我几乎只使用你的第二种方法says...but。

来自.NET的land...it对我来说更有意义,也让事情更容易阅读。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2321520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档