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 );
});
}
作者:NewSea 出处:http://newsea.cnblogs.com/
QQ,MSN:iamnewsea@hotmail.com 如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。 |