如果定义一个内联(inline)回调函数同时这个包含多个元素的jQuery对象(正如上面所说的第一个例子),对于这个集合中的每个元素都会在内存中保存一个回调函数的副本。用数组方式来遍历jQuery 对象集合你或许没有注意到,但是在性能方面,对于jQuery each方法这种优雅实现是有代价的。有一个办法能够更快地遍历一个jQuery对象。就是通过数组来实现,jQuery对象集合就是一个类数组,具有length和value属性。可以通过程序来测试一下性能:HTML:<ul id="testList" ><li>Item</li><li>Item</li><li>Item</li><li>Item</li> <li>Item</li><li>Item</li><li>Item</li><li>Item</li><li>Item</li><!-- add 50 more --></ul>JS:var arr = $("li"),iterations = 100000;//------------------------------// Array实现: console.time("Native Loop");for (var z = 0; z < iterations; z++) {var length = arr.length;for (var i = 0; i < length; i++) { arr[i];}}console.timeEnd("Native Loop");//------------------------------// each实现: console.time("jQuery Each");for (z = 0; z < iterations; z++) {arr.each(function(i, val) { this;});}console.timeEnd("jQuery Each");
更多相关内容: