jQuery目前为我提供了一段有趣的Javascript介绍,在经过12年的幸福幸存之后没有。我正在尽力学习如何优化我编写的代码,尽管我找到了很多很好的参考资料,但还是有一些非常基本的东西令我困惑,而且我一直无法学习在任何地方找到它的任何东西。
当我将一些东西附加到某个元素上时,我应该如何在该函数中引用该元素。例如,附加功能元素的click事件时:
$('#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');
});
我理解的东西传递给变量的性能效率,但不论是否在这些情况下使用$(本)或$(event.target)为我提供了已经等在同一效率我不确定设置一个新的变量我实际上正在做更多的工作,我需要。
谢谢。
的'事件对象的target'属性是jQuery的标准化,并将努力在所有浏览器相同它支持。它并不总是与'this'一样。 – 2010-08-02 13:35:37
@GenericTypeTea - 您的获奖方法是我所见过的几乎所有参考资料,但我没有看到 - 它解释了为什么他们使用这种方法,除了使用相当于$('#a_button ')应该避免,因为无论何时使用它都需要新的DOM查找。 – 2010-08-02 13:40:24
@Tim - 更新了答案。谢谢。 – GenericTypeTea 2010-08-02 13:42:54