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