博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery编程技巧
阅读量:4933 次
发布时间:2019-06-11

本文共 3358 字,大约阅读时间需要 11 分钟。

1.将会重用的元素缓存

//bad

var h = $('#hello').height();

$('#hello').css('height',h-20);

//good

var $hello = $('#hello'),

  h = $hello.height();

$hello.css('height',h-20);

 

2.尽量少设置全局变量,尽量在函数作用域内设置变量

 

3.缓存jQuery对象,并在jQuery对象前加$前缀,便于识别

//bad

var hello = $('#hello'),

  value = hello.val();

//good

var $hello = $('#hello'),

  value = $hello.val();

 

4.将多条var语句合并成一条var语句,将未赋值的变量放到后面

//good

var $hello = $('#hello'),

  value = $hello.val(),

  k = 3,

  i,

  j,

  myArr = [];

 

5.统一使用on()方法

//bad

$hello.click(function(){

  $hello.css('border','1px solid red');

  $hello.css('color','blue');

});

$hello.hover(function(){

  $hello.css('border','1px solid red');

});

//good

$hello.on('click',function(){ 

  $hello.css('border','1px solid red');

  $hello.css('color','blue');

});

$hello.on('hover',function(){

  $hello.css('border','1px solid red');

});

 

6.精简js

//bad

$hello.click(function(){

  $hello.css('border','1px solid red');

  $hello.css('color','blue');

});

//good

$hello.on(function(){

  $hello.css({

    'border':'1px solid red',

    'color':'blue'

  });

});

 

7.链式操作

//bad

$hello.html(value);

$hello.on('click',function(){

  alert('hello everyone');

});

$hello.fadeIn('slow');

$hello.animate({height:'120px'},500);

//good

$hello.html(value);

$hello.on('click',function(){

  alert('hello everyone');

}).fadeIn('slow').animate({height:'120px'},500);

 

8.利用缩进和换行提高代码可读性

//bad

$hello.html(value);

$hello.on('click',function(){

  alert('hello everyone');

}).fadeIn('slow').animate({height:'120px'},500);

//good

$hello.html(value);

$hello

  .on('click',function(){alert('hello everyone');})

  .fadeIn('slow')

  .animate({height:'120px'},500);

 

9.使用短路求值,短路求值是一个从左到右的表达式,用&&(逻辑与)或||(逻辑或)操作符

//bad

function init($myElement){

  if(!$myElement){

    $myElement = $('#myElement');

  }

}

//good

function init($myElement){

  $myElement = $myElement || $('#myElement');

}

 

10.选择捷径

//bad

if(myArr.length > 0){}

//good

if(myArr.length){}

 

11.缓存父元素并在选择子元素时重用这些已缓存的父元素

//bad

var $container = $('#container'),

  $containerLi = $('#container li'),

  $containerLiSpan = $('#container li span');

//good

var $container = $('#container'),

  $containerLi = $('#container').find('li'),

  $containerLiSpan = $containerLi.find('span');

 

12.尽量少用通用选择符(*)

 

13.避免隐式通用选择符

//bad

$('.hello :radio')

//good

$('.hello input:radio')

 

14.优化选择符

 

15.选择器从id开始

//bad

$('#container div.robot')

//good

$('#container').find('div.robot')

 

16.让选择器右侧更具有特征性,相对而言,选择器左侧可以少一些特征性

//bad

$('div.head  .info')

//good

$('.head  span.info')

 

17.避免过多的约束条件,尽量移除中间的

//bad

$('.head  div.content  span.info')

//good

$('.head  span.info')

 

18.多次DOM操作合成一次

//bad

for (var i = 0;i < 100;i++) {

  $('#menu').append("<li>" + i + "</li>");

}

//good

var menu = "<ul id='menu'>",

  $div = $('div');

for (var i = 0;i < 100;i++) {

  menu += "<li>" + i + "</li>";

}

menu += "</ul>";

$div.append(menu);

 

19.在class前加上tagName,并且用就近的id限制选择的范围

//good

$('#head span.info')

 

20.尽量少用class选择器,不要用tagName或id来修饰id

//bad

$('div#head');$('#head #info')

 

21.用find代替后代选择器

//bad

$('#head span.info')

//good

$('#head').find('span.info')

 

22.在对对象操作之前先确定对象存不存在

 

23.使用直接函数

如:使用$.ajax(),而不是使用$.get();$.getJSON();$.post();

 

24.使用最新版本的jQuery,需要测试,有时也不是完全兼容老版本

 

25.给超过15个元素添加样式时,不使用CSS()方法,而是向head里添加style

如:$('<style>div{height:20px;background-color:orange;}</style>').appendTo('head');

 

26.必要的时候使用原生JS

//bad

$(this).attr('id')

//good

this.id

 

转载于:https://www.cnblogs.com/chuanzhi946/p/6476911.html

你可能感兴趣的文章