1.使用最新版本的jquery库
jQuery新版本会对旧版本进行优化和Bug修复。但是使用时要测试一下,可能有些代码改了。
2.使用合适的选择器
$(“#id”):使用id来定位DOM元素是最佳提高性能的方式。因为jQuery是直接调用document.getElementById()。如果id找不到可以添加find()来缩小范围(
$('#id').find('div').css(xxx=xxxx)
)。所以最好先从id来着元素。
$('p')、$('div'):这是第二选择。因为jQuery直接调用document.getElementByTagName()。
$('.class'):ie9以上是使用document.getElementByClassName().ie8及其以下使用dom搜索方式实现会影响性能。有选择性的使用
$("[attribute=value]"):大多数都是使用搜索方式来实现。尽量避免。
$(":hidden"):需要搜索每一个元素来定位选择器。要使用最好先定位父元素
性能从上往下降低。
3.缓存对象
$('#id').find('div').css(xxx);
$('#id').find('div').hide();
$('#id').find('div').show();
改为
var $a = $('#id').find('div');
$a.css(xxxx);
$a.show();
$a.hide()
因为每一个选择器都会创建jQuery对象。不要让相同的选择器在代码里出现多次。
4.循环时的DOM操作
var a=[...];
var $b = $('#abc');
for(int i=0;i<a.length;i++){
$b.append("<li>hello,a[i]</li>");
}
改为
var a=[...];
var b = "";
for(int i=0;i<a.length;i++){
b+="<li>hello,"+a[i]+"</li>";
}
$("#abc").html(b);
5.数组方式使用jQuery对象
在性能方面建议使用for或while来处理,不要使用$.each();
6.事件代理
$("#table td").bind("click",function(){...})//绑定了所有的td
改为
$("#table").bind("click",function(event){
$(event.target).css();//只绑定了触发事件的元素
})
(function($){
$.fn.pluginName = function(){
//code
}
})(jQuery);
8.使用join()来拼接字符串
创建一个数组,把字符串传进去,然后调用 数组名.join('')来拼接字符串。会比+好一点。
9.合理一用html5的Data属性
<div id="id" data-url="" data-option="{'name':'jack'}" data-last-value=""/>
var $a = $("#id");
$a.data("url");
$a.data("option").name;
$a.data("lastValue");
10尽量使用原生的javaScript方法
$("#abc").is(":checked");
$("#abc").get(0).checked;
$(this).css("color":"red");
this.style.color="red";
$("<p></p>")
$(document.createElement("p"))
jQuery技巧
1.禁用页面右键菜单
$(function(){
$(document).bind("contextmenu",function(e){return false;});
});
function F(input){
var defaultValue = input.val();
input.focus(function(){
if($.trim(input.val())==defaultValue){
input.val("");
}
}).blur(function(){
if($.trim(input.val())==''){
input.val(defaultValue);
}
});
}
3.获取选择的下拉框
$("#xxx option:selected")