jQuery 性能调优

常见jQuery 性能调优:
 
  • :eq 选择器性能低下.

我在 flexigrid 中扩展了树型展示功能.发现 :eq 选择器效率非常低下(不是 .eq function.)

  •  带有容器的选择器也很低下

如: var row = $("#row1", jt ) ;  性能比: var row = $("#row1") 差很多。

  • Dom 查找是公认的慢,所以要缓存
  • :visible  :hidden 也非常慢。  5700 次,需要 1800 毫秒。 看源码,它进行多次DOM 取值。

jQuery.expr.filters.hidden = function (elem) {
var width = elem.offsetWidth,
height = elem.offsetHeight;

return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css(elem, "display")) === "none");
};

严重怀疑所有 : 开始的查找,都很慢。 

  • datetimepicker 代码非常臃肿。 其中它扩展的 remove 方法性能是非常之差。

remove: function(selector, keepData) {
return this.each(function() {
if ( !keepData ) {
if ( !selector || $.filter( selector, [ this ] ).length ) {
$( "*", this ).add( this ).each(function() {
$( this ).triggerHandler( "remove" );
});
}
}
return _remove.call( $(this), selector, keepData );
});
}

posted @ 2010-12-25 22:27  NewSea  阅读(679)  评论(0编辑  收藏  举报