技术开发 频道

jQuery中文教程之非常好的实践

        8. 少改动DOM结构

  (1)改动DOM结构开销很大,因此不要频繁使用.append()、.insertBefore()和.insetAfter()这样的方法。

  如果要插入多个元素,就先把它们合并,然后再一次性插入。根据测试,合并插入比不合并插入,快了将近10倍。

  (2)如果你要对一个DOM元素进行大量处理,应该先用.detach()方法,把这个元素从DOM中取出来,处理完毕以后,再重新插回文档。根据测试,使用.detach()方法比不使用时,快了60%。

  (3)如果你要在DOM元素上储存数据,不要写成下面这样:

  var elem = $('#elem');

  elem.data(key,value);

  而要写成

  var elem = $('#elem');

  $.data(elem,key,value);

  根据测试,后一种写法要比前一种写法,快了将近10倍。因为elem.data()方法是定义在jQuery函数的prototype对象上面的,而$.data()方法是定义jQuery函数上面的,调用的时候不从复杂的jQuery对象上调用,所以速度快得多。(此处可以参阅下面第10点。)

  9. 正确处理循环

  循环总是一种比较耗时的操作,如果可以使用复杂的选择器直接选中元素,就不要使用循环,去一个个辨认元素。

  javascript原生循环方法for和while,要比jQuery的.each()方法快,应该优先使用原生方法。

  10. 尽量少生成jQuery对象

  每当你使用一次选择器(比如$('#id')),就会生成一个jQuery对象。jQuery对象是一个很庞大的对象,带有很多属性和方法,会占用不少资源。所以,尽量少生成jQuery对象。

  举例来说,许多jQuery方法都有两个版本,一个是供jQuery对象使用的版本,另一个是供jQuery函数使用的版本。下面两个例子,都是取出一个元素的文本,使用的都是text()方法。你既可以使用针对jQuery对象的版本:

  var $text = $("#text");

  
var $ts = $text.text();

  也可以使用针对jQuery函数的版本:

  var $text = $("#text");

  
var $ts = $.text($text);

  由于后一种针对jQuery函数的版本不通过jQuery对象操作,所以相对开销较小,速度比较快。

0
相关文章