微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – $.each([collection])vs $([collection]).each()

这两种方法看起来都是 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();

我错了吗

解决方法

两者之间的差异实际上是指数,取决于你如何使用它.

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

第二个$(foo.vals).each进行三个函数调用来启动迭代器.第一个是$(),它产生一个新的jQuery包装集(不知道在这个过程中有多少其他函数调用).然后调用$().最后,内部调用jQuery.each启动迭代器.

在你的例子中,差距至少可以忽略不计.但是,在嵌套使用场景中,您可能会发现性能成为问题.

最后,Cody Lindley在jQuery Enlightenment中不推荐使用$.each来迭代大于1000,因为涉及到函数调用.对于(var i = 0 … loop)使用正常值.

原文地址:https://www.jb51.cc/jquery/175617.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐