您见过哪些JQuery不良/最差实践,写的或者应该避免的事情?
您见过哪些JQuery不良/最差实践,写的或者应该避免的事情?
一个需要避免的事情是每行都再次使用“易于使用”的选择器,因为选择器的JavaScript实现不是非常高效的。当然,jQuery的开发者正在进行优化,但我认为你应该尽可能少地使用它。
所以,这是一种不好的做法。
$("li ul span").show();
$("li ul span").toggleClass("bubu");
链式编程很好
$("li ul span").show().toggleClass("bubu");
而将事物记在本地变量中也不错:
var allspans = $("li ul span");
allspans.show();
allspans.toggleClass("bubu");
有两种方法我经常看到:
第一种,在点击事件中,id
可以这样访问:
$("a").click(function(e){
var id = $(this).attr('id');
});
这将在DOM节点周围创建一个新的jQuery对象,并调用一个函数。以下是正确的方法:
$("a").click(function(e){
var id = this.id;
});
注意:你也会看到$(this).attr('href')
,但这是正确的,因为jQuery在不同浏览器中对它进行了标准化。
第二个问题是将除DOM节点之外的任何内容传递给jQuery调用的scope
参数:
$(".child", $(".parent")).doSomething();
// or
$(".child", ".parent").doSomething();
这样做并不会带来任何速度提升。只有在已经拥有 DOM 元素的情况下,你才能看到速度的提高:
$('div').click(function(){
$('img', this).doSomething(); // This is good
});
仍在使用旧的文档就绪函数:
$("document").ready(function(){ });
与其使用非常常见的:
$(function(){ });
这不是真的很糟糕,但是它表明人们没有跟上新的API。
$(document).ready(...)
经常用于使代码清晰明了。当然,它并不是必需的,但在我看来这并不是一种坏习惯。 - Doug Neiner