你见过、写过或应该避免的事情是什么?
问问题
4588 次
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 节点之外的任何内容传递到scope
jQuery 调用的参数中:
$(".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 回答