21

你见过、写过或应该避免的事情是什么?

4

4 回答 4

33

您应该避免的一件事是再次在每一行中使用“易于使用”的选择器,因为选择器的 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");
于 2010-01-15T07:47:37.500 回答
17

我经常看到的有两个:

首先,在点击事件中,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 节点之外的任何内容传递到scopejQuery 调用的参数中:

$(".child", $(".parent")).doSomething();
// or
$(".child", ".parent").doSomething();

这样做根本没有速度增益。当您已经拥有 DOM 元素时,您确实会看到速度提高:

$('div').click(function(){
   $('img', this).doSomething(); // This is good
});
于 2010-01-15T07:48:39.060 回答
5

James Padolsey 写了一篇关于 jQuery 代码气味的优秀文章。我建议阅读它。

于 2010-01-15T07:51:46.030 回答
2

仍然使用旧的文档准备功能:

$("document").ready(function(){ });

而不是很常见的:

$(function(){ });

这并不是很糟糕,但我向人们展示了新的 api 并没有起床。

于 2010-01-15T07:47:48.220 回答