【发布时间】:2011-03-14 22:18:36
【问题描述】:
好的,给牛仔装上鞍,因为这将是一个很长的时间。我整个上午都在浏览我的一些旧代码,我想知道最佳实践和优化。为了避免在主观车道上骑行,我将发布一些示例,其中包含一些希望易于回答的问题。我将尽量使示例保持简单,以便于回答并减少出错的可能性。我们开始:
1) 赋值与 jQuery 调用
我了解在访问选择器时,通常认为将选择器分配给变量而不是多次调用相同的调用会更好 - 例如。
$('div#apples').hide();
$('div#apples').show();
对比
var oranges = $('div#oranges');
oranges.show();
oranges.hide();
在引用 jQuery 的 $(this) 时是否也适用同样的规则?前任。一个简单的脚本,使表格中的一些数据可点击并自定义链接。
$('tr td').each( function() {
var colNum = $(this).index();
var rowNum = $(this).parent().index();
$(this).wrap('<a href="example.com/hello.html?column=' + colNum + '&row=' + rowNum +'">');
})
对比
$('tr td').each( function() {
var self = $(this);
var colNum = self.index()
var rowNum = self.parent().index()
self.wrap('<a href="example.com/hello.html?column=' + colNum + '&row=' + rowNum +'">');
});
2) this 与 $(this)
好的,下一个是我想知道很长时间的事情,但我似乎找不到任何相关信息。请原谅我的无知。什么时候调用 vanilla js this 而不是 jQuery 包装的 $(this) 有意义?这是我的understanding -
$('button').click(function() {
alert('Button clicked: ' + $(this).attr('id'));
});
比访问 vanilla this 对象的 DOM 属性效率低得多,如下所示 -
$('button').click(function() {
alert('Button clicked: ' + this.id);
});
我知道那里发生了什么,我只是想知道在决定使用哪个时是否有经验法则可以遵循。
3) 特异性越高越好吗?
这个非常简单,使用我们的选择器更具体是否总是有益的?很容易看出$('.rowStripeClass') 会比$('#tableDiv.rowStripeClass') 慢得多,但我们在哪里划清界限呢? $('body div#tableDiv table tbody tr.rowStripeClass') 还更快吗?任何意见将不胜感激!
如果您已经做到了这一点,感谢您的关注!如果你还没有,:p
【问题讨论】:
标签: javascript jquery sizzle