JQuery preferment improvement


1.Always descend From an #id

//The faster selector in jQuery is the ID selector ($('#elementid'))
//This is because the ID SELECTOR maps directly to a native JavaScript
//method,getElementById();

//***********************important tips***************************
//(1)kernel point.
$("#element-id") = getElementById() //[native JavaScript method]

//(2)multiple elements selecting
To minimum the performance hit,Always descend from the closet parent ID
//从最近的开始选择

2.Use Tag selector before Classes selector

//This is the second fastest selector,again this' because
//Tag selector maps to another native JavaScript method
//getElementByTagName();
//***********************important tips***************************
//(1)always prefix a class with a tag name
//(and also always remember descend from an ID)
//(2)along the same lines,it's redundant to descend from multiple IDs
//example
//var traffic_light = $('#content #traffic_light');

3.Cache jQuery Objects
//example
//var jQueryObj = $(....);
//jQueryObj.css('border':'1px solid #dcdcdc');
//jQueryObj.bind('click',function(){.....});
//jQueryObj.fadeIn('slow');

//***********************important tips***************************
//(1)never repeat a jQuery selection operation

4.Storing jQuery results for later

//If you intend to use the jQuery result object(s) in another part
//of your program, or should your function execute more than once,
//cache it in an object with a global scope. By defining a global
//container with jQuery results, we can reference them from within
//other functions:

//***********************important tips***************************
//(1)Cache the element in an JavaScript Container

window.$my = {
title : $('title'),
tBody : $('body'),
element : $('.....')
};//Create a global scope container

$my.title.html('Hello World!');
$my.element.bind('click',function(){....});

5.Chaining
$(....).css(..).bind(...).....

6.Use Sub-queries
$my = $(...);
$mySub = $my.find(...);
7.Leverage Event Delegation (a.k.a. Bubbling)

$('#myList li').bind('click',function(){

$(this).addClass('clicked');
});

Better like below:

$('#myList').bind('click',function(e){

//e = e || window.event;
var target = e.target;
$target = $(target);
if($target.nodeName === 'LI'){

$target.addClass('clicked');
}
});

to be continued...
reference: http://www.artzstudio.com/2009/04/jquery-performance-rules/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值