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

前端之家收集整理的这篇文章主要介绍了jquery – $.each([collection])vs $([collection]).each()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这两种方法看起来都是 produce the same results,但是我很难实际说服人们认为第二种方法是有效的,因为它显然不是众所周知的. @H_301_2@// 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); });

在检查来源时,这两个看起来是一样的.第二种方法如下:

@H_301_2@each: function( callback,args ) { return jQuery.each( this,callback,args ); }

这种方法可以称之为更常见的方法,这意味着它也是合法的.这个理解是正确的,还是我在这里遗漏的东西?

我通常信任这种方法,因为它不会导致我偏离关于选择器的标准做法.让我们面对它,我们接受过培训:

@H_301_2@$("p").each();

所以似乎只是自然而然:

@H_301_2@$(obj).each();

我错了吗

解决方法

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

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

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

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

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

猜你在找的jQuery相关文章