2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

jQueryを使う時、いくつかよいポイント

Last updated at Posted at 2014-06-26

jQueryを使う時、いくつかよいポイント


1.よく使うdom要素を最初に宣言する(缓存变量,DOM遍历是昂贵的,所以尽量将会重用的元素缓存)
// よくない


h = $('#ele').width();
$('#ele').css('width',h/2);


// よい


$ele = $('#ele');
h = $ele.width();
$ele.css('width',h/2);



2.グローバル变量を避けたほうがいい(避免全局变量)
// よくない


$ele = $('#ele');
h = $ele.width();
$ele.css('width',h/2);


// よい


var $ele = $('#ele');
var h = $ele.width();
$ele.css('width',h/2);



3.jquery要素前に'$'をつける(在变量前加$前缀,便于识别出jQuery对象)
// よくない


var first = $('#first');
var second = $('#second');
var third = $('#third');


// よい


var $first = $('#first');
var $second = $('#second');
var $third = $('#third');



**4.いくつか宣言をある時、一個のvarを使う、そしてバリューをつけるのやつを最後に書きます(**将多条var语句合并为一条语句,我建议将未赋值的变量放到后面。)
例:
var
$first = $('#first'),
$second = $('#second'),
$third = $('#third'),
i,
j;



5.click()イベントより、on()のほうがよい(使用 on()方法)
// よくない


$first.click(function(){
$first.css('display', 'none');
$first.css('color', 'green');
});


$first.hover(function(){
$first.css('display', 'none');
})


// よい
$first.on('click',function(){
$first.css('display', 'none');
$first.css('color', 'green');
})


$first.on('hover',function(){
$first.css('display', 'none');
})



6.できるだけ函数を合併する(一般来说,最好尽可能合并函数)
// よくない


$first.click(function(){
$first.css('display', 'none');
$first.css('color','blue');
});


// よい


$first.on('click',function(){
$first.css({
'display': 'none',
'color': 'blue'
});
});



7.チェーンを使う(链式操作)
// よくない


$first.html(value);
$first.on('click',function(){
alert('hoge');
});
$first.fadeIn('slow');
$first.animate({width:'120px'},500);


// よい


$first.html(value);
$first.on('click',function(){
alert('hoge');
}).fadeIn('slow').animate({width:'120px'},500);



8.コードの可読性を注意(维持代码的可读性,伴随着精简代码和使用链式的同时,可能带来代码的难以阅读。添加缩紧和换行能起到很好的效果)
// よくない


$second.html(value);
$second.on('click',function(){
alert('hello everybody');
}).fadeIn('slow').animate({width:'120px'},500);


// よい


$second.html(value);
$second
.on('click',function(){ alert('hello everybody');})
.fadeIn('slow')
.animate({width:'120px'},500);



9.&& と ||を使う(选择短路求值,短路求值是一个从左到右求值的表达式,用 &&(逻辑与)或 || (逻辑或)操作符)
// よくない


function initVar($myVar) {
if(!$myVar) {
$myVar = $('#selector');
}
}


// よい


function initVar($myVar) {
$myVar = $myVar || $('#selector');
}



10.ショートカットを使う(选择捷径,精简代码的其中一种方式是利用编码捷径)
// よくない


if(collection.length > 0){..}


// よい


if(collection.length){..}



11.重い操作を行うときに、要素を切り離す(繁重的操作中分离元素,如果你打算对DOM元素做大量操作(连续设置多个属性或css样式),建议首先分离元素然后在添加)
// よくない


var
$container = $("#container"),
$containerLi = $("#container li"),
$ele = null;


$ele = $containerLi.first();
//... 諸々設定(许多复杂的操作)


// better


var
$container = $("#container"),
$containerLi = $container.find("li"),
$ele = null;


$ele = $containerLi.first().detach();
//... 諸々設定(许多复杂的操作)


$container.append($ele);



12.高效化すること(查看的文档,可能会有一个更好或更快的方法来使用它)
// よくない


$('#id').data(key,value);


// よい (高效)


$.data('#id',key,value);



13.繰り返すdom要素を探すより、find()を使う(使用子查询缓存的父元素,正如前面所提到的,DOM遍历是一项昂贵的操作。典型做法是缓存父元素并在选择子元素时重用这些缓存元素)
// よくない


var
$container = $('#container'),
$containerLi = $('#container li'),
$containerLiSpan = $('#container li span');


// よい (高效)


var
$container = $('#container '),
$containerLi = $container.find('li'),
$containerLiSpan= $containerLi.find('span');



**14.子供要素を探す時、'>'を避けたほうがいい(**避免通用选择符,将通用选择符放到后代选择符中,性能非常糟糕)
// よくない


*$('.container > ');


// よい


$('.container').children();

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?