Jquery糟糕的做法

piy*_*yer 18 javascript jquery design-patterns code-standards

你应该避免哪些JQuery糟糕/最糟糕的做法,写作或事情?

nai*_*sts 31

你应该避免的是使用"易用"选择在每一行再次,因为JavaScript实现选择的不是那个效率.当然,jQUery的人正在优化它,但我认为你应该尽可能少地使用它.

所以,这是一种不好的做法.

$("li ul span").show();
$("li ul span").toggleClass("bubu");
Run Code Online (Sandbox Code Playgroud)

链接很好

$("li ul span").show().toggleClass("bubu");
Run Code Online (Sandbox Code Playgroud)

记住局部变量中的东西也不错:

var allspans = $("li ul span");
allspans.show();
allspans.toggleClass("bubu");
Run Code Online (Sandbox Code Playgroud)


Dou*_*ner 17

我看到有两个很多:

首先,在单击事件中,id可以像这样访问:

$("a").click(function(e){
   var id = $(this).attr('id');
});
Run Code Online (Sandbox Code Playgroud)

这会在DOM节点周围创建一个新的 jQuery对象,调用一个函数.以下是正确的方法:

$("a").click(function(e){
   var id = this.id;
});
Run Code Online (Sandbox Code Playgroud)

注意:您也会看到$(this).attr('href'),但这是正确的,因为jQuery在浏览器中对其进行规范化的方式.

所述第二被传递任何东西,除了DOM节点到scopejQuery的呼叫的参数:

$(".child", $(".parent")).doSomething();
// or
$(".child", ".parent").doSomething();
Run Code Online (Sandbox Code Playgroud)

这样做完全没有速度增益.你看到速度增加的地方,就是你已经拥有DOM元素:

$('div').click(function(){
   $('img', this).doSomething(); // This is good
});
Run Code Online (Sandbox Code Playgroud)


Phi*_*ler 5

James Padolsey撰​​写了一篇关于jQuery代码气味的精彩文章.我建议阅读它.