首页  ·  知识 ·  前端
jquery性能最佳实践
曾祥展     综合  编辑:dezai   图片来源:网络
div align=justifyfont size=4将/stro
jquery
for访length
var
for
// 要做的事
}

使append
(var i = 0; i < myLength; i++) {
myLength = myArray.length;
DOMjQuery UI widget使





}

// 老套写法
var
var
};
var

//
var
test2 =
},
test3 = (
})(1



// 旧方法
if
}

// 好方法
if
}

// 查找对象
if
foo:
bar:
})[type]) {...
1
1,
(({
(/^(foo|bar)$/.test(type)) {...
(type == 'foo' || type == 'bar') {...
, 2);
function(foo, bar) {...
test2(test);
function() {...
test = 1,
test3 = test2(test);
test2 = function() {...
test = 1;
DOM
// 别这样
$.
var
$(
});
//较好的做法
var
$.
var
frag.
});
$(each()$(domdocument.DOM

// 或者这样
var
$.
html +=
});
$(


// 不理想
if
$ventfade.
}
if
$venthover.
}
if
$spans.
}
// 较好的
var
$.
if
v
}
})


使


// 不要这样
$(
$(
$(
});
});
$(
})
});

// 较好的
var
onReady:
$(
$(
},
candyMtn:
$(
},
slideCb:
},
unicornCb:
}
}
$(

DOM
, ID使#idelement
// 非常快
$(
// 超级快
$(使$.jqueryID.JavascriptgetElementById()DOMID


// 未优化
$(
// 优化后
$(使tag.tag.


$(
// 不写中间的会更好
$(DOM


使

$(// 极慢
$(// 快很多
$(// 无定向搜索
$(// 同上
$(// 这样好很多

使

jQuery$.$.使$.$.$.80 % 使


// 不好的 (如果列表里面元素很多)
$(

// 较好的: event delegation with $.fn.live
$(

// 最优的: $.fn.delegate
$(

移除元
DOMjQuery1.
$.DOM
var
var
$table.
// ... 添加大量的行到表格中
$parent.

.detach()., .jQueryDOM


CSS使

$.20CSSstyle60 %
// 多于20明显慢
$(
$(

使$.$.$.DOMjQuery$.10.DOMjQuery
// 常用
$(
// 快十倍
$.




jQuery
//太遭了,执行了三个方法后才意识到里面是空的
$(

// 较好
var
if
mySelection.
}

// 最佳: add a doOnce plugin
jQuery.
this
return
}
$(
// make it ajax! \o/
});
'li.cartitems').doOnce(function() {
this;
.length && func.apply(this);
fn.doOnce = function(func) {
slideUp();
($mySelection.length) {
$mySelection = $('#nosuchthing');
'#nosuchthing').slideUp();
data(elem, key, value);
elem).data(key, value);
fn.data
data
fn.data
data
'<style type="text/css">a.swedberg { color : #asd123 }</style>').appendTo('head');
'a.swedberg').css('color', '#asd123');
fn.css
detach()
remove()
append(table);
detach();
$parent = table.parent();
$table = $('#myTable');
fn.detach
4
'#myList').delegate('li.trigger', 'click', handlerFn);
'li.trigger').live('click', handlerFn);
'li.trigger').click(handlerFn);
fn.live
fn.live
fn.delegate
fn.delegate
fn.live
'.gender input:radio');
'.gender *:radio');
'.gender :radio');
'.buttons').children();
'.buttons > *');
'.data td.gonzalez');
'.data table.attendees td.gonzalez');
class
class
'.data td.gonzalez');
'div.data .gonzalez');
fn.find
'#container').find('div.robotarm');
'#container div.robotarm');
document).ready(PI.onReady);
function() {...
function() {...
'#yayeffects').slideUp(PI.slideCb);
function(e) {
'#happiness').load(url + ' #unicorns', PI.unicornCb);
'#magic').click(PI.candyMtn);
function() {...
PI = {
'#happiness').load(url + ' #unicorns', function() {...
'#yayeffects').slideUp(function() {...
'#magic').click(function(e) {
document).ready(function() {...
.stop();
(v.data('currently') != 'showing') {
each(elems, function(k, v) {
elems = [$ventfade, $venthover, $spans];
stop();
($spans.data('currently') != 'showing') {
stop();
($venthover.data('currently') != 'showing') {
stop();
($ventfade.data('currently') != 'showing') {
'#ballers').html(myHtml);
'<li>' + item + '</li>';
each(myArray, function(i, item) {
myHtml = '';
createDocumentFragment()
'#id')
'#ballers')[0].appendChild(frag);
appendChild(newLI[0]);
newLI = '<li>' + item + '</li>';
each(reallyLongArray, function(count, item) {
frag = document.createDocumentFragment();
'#ballers').append(newLI);
newLI = '<li>' + item + '</li>';
each(reallyLongArray, function(count, item) {
本文作者:曾祥展 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读