【发布时间】:2011-03-24 05:08:25
【问题描述】:
在我快乐地生活了 12 年后,jQuery 目前正在为我提供一个有趣的 Javascript 介绍。我正处于尝试尽可能多地学习优化我编写的代码的阶段,虽然我找到了很多很好的参考资料,但有一些非常基本的东西让我感到困惑,我一直无法在任何地方都可以找到有关它的任何信息。
当我将某些东西附加到一个元素时,我应该如何在函数中引用该元素。例如,将函数附加到元素的点击事件时:
$('#a_button',$('#a_list_of_buttons')).click(function() {
// NOW WHAT'S THE BEST WAY TO REFER TO '#a_button' ?
});
我知道不要像这样一直重新选择它,因为浏览器必须从头开始重新搜索整个 DOM 才能找到它已经找到的内容:
$('#a_button').click(function() {
// I KNOW THAT THIS IS NAUGHTY
var buttonValue = $('#a_button').val();
$('#a_button').addClass('button_has_been_clicked');
});
目前我正在使用以下任何一种,但不完全确定每个人实际上在做什么:
$('#a_button').click(function() {
// USING this
var buttonValue = $(this).val();
$(this).addClass('button_has_been_clicked');
});
但这只是像第一个“顽皮”示例中那样重新选择吗?
$('#a_button').click(function(event) {
// USING event.target
var buttonValue = $(event.target).val();
$(event.target).addClass('button_has_been_clicked');
});
这看起来可能更好,但多次引用“event.target”是否有效?
$('#a_button').click(function(event) {
// USING A LOCAL VARIABLE
var thisButton = $(this);
// OR SHOULD THAT BE
var thisButton = $(event.target);
var buttonValue = thisButton.val();
thisButton.addClass('button_has_been_clicked');
});
我了解将事物传递给变量的性能效率,但我不确定在这些情况下使用 $(this) 或 $(event.target) 是否已经为我提供了相同的效率,因此通过设置一个新变量我实际上正在做更多我需要做的工作。
谢谢。
【问题讨论】:
标签: javascript jquery optimization