2016-05-23 50 views
1

有人可以解釋爲什麼這些版本的代碼之一工作,而另一個失敗?將jquery對象分配給變量不能按預期工作

這不起作用:

var classForSelectedElement = "hightlight"; 
var prevSelect = $(".form-element"); 
var $selectedElement = $("div").on("click", ".form-element",function(e){ 
    prevSelect.removeClass(classForSelectedElement); 
    $(this).addClass(classForSelectedElement); 
}); 

鑑於此作品:

var classForSelectedElement = "hightlight"; 
var $selectedElement = $("div").on("click", ".form-element",function(e){ 
    $(".form-element").removeClass(classForSelectedElement); 
    $(this).addClass(classForSelectedElement); 
}); 

爲什麼?

+0

你爲什麼使用事件代表團?如果你不知道那是什麼,你肯定需要了解它(因爲你正在使用它)。如果你知道它是什麼,你基本上已經有你的答案。 –

+0

@bibangamba [This](http://stackoverflow.com/a/24053931/4790490)可能會回答您的查詢。 – Hearty

回答

2

假設在加載後動態地將.form-element元素附加到DOM(由於您使用了委託事件處理程序),則第一個示例不起作用,因爲您在嘗試在頁面加載之前檢索.form-element它們存在。

+0

你完全正確(動態添加DOM)。沒有意識到發生了什麼事。謝謝! – bibangamba

+0

沒問題,很樂意幫忙。 –