如何将jQuery each()转换为常规的javascript循环

几个问题:

  1. 是一个常规的javascript循环(循环一系列元素)比使用jQuery each()更快/更高效?

  2. 如果是这样,将以下代码编写为常规javascript循环的最佳方法是什么?

$('div').each(function(){ //... })

是的,删除each()会给你带来更好的性能。 这就是为元素列表编写for循环的方法。

 var divs = $('div'); for(var i = 0; i < divs.length; i++){ var thisDiv = divs[i]; // element var $thisDiv = $(divs[i]); // jquery object // do stuff } 
 var divs = document.getElementsByTagName('div'), l = divs.length, i, cur; for(i=0; i 

请继续按照效率的名义删除jQuery。 此代码比jQuery等效快约五十倍。

要回答你的第二个问题,由于第一个问题已经得到回答;

我也对此感兴趣,并且我决定使用Gabe的例子对两者进行基准测试以找出差异。 答案是,在需要jQuery对象作为最终结果的情况下:

他们表现完全一样。

http://jsperf.com/jquery-each-vs-native-selectors

Firefox显然更快地找到了jQuery版本。

而不是使用jquery .each()

 $('div').each(function(){ //... }) 

您可以使用document.querySelectorAll() ,然后将HTMLCollection转换为JavaScript数组。 然后,您可以映射元素数组。

  const elems = document.querySelectorAll('.my-elements') const $elems = [].slice.call(elems) $elems.map( (elem) => { console.log(elem) })