2013-11-24 28 views
0

我有幾個動態生成的HTML元素,每個元素都使用自己的動態ID作爲類名。我有連接到這些元素像這樣的事件監聽器:在HTML元素上使用動態類名更改事件處理程序?

$(document).on("click", ".id_" + dynamic_id , clickCallback); 

的問題是動態ID可以通過Ajax成功調用而變化,以及相應的HTML元素被更新,像這樣:

$(".id_" + old_dynamic_id).attr("class", new_dynamic_id); 

這更改將使先前附加的事件偵聽器丟失,因爲它不知道HTML元素現在具有已分配的新ID。

什麼將是一個乾淨的方式來處理呢?我可以將事件監聽器重新附加到ajax成功函數中,但這並不理想,因爲會有兩個地方存在相同的事件監聽器代碼:創建元素並在ajax成功函數中。

+0

附加事件處理程序的元素本身。目前,您將處理程序附加到文檔,並使用事件委派。 – goat

回答

0

這似乎工作:

$(".link").on("click", function() { 
    alert("yes"); 
}); 
$(".link").attr("class", "new-class"); 

即如果事件直接附加到元素。

http://jsfiddle.net/5ru2W/

1

你可以試試這個:

$(document).on("click", "[class^='id_']", clickCallback); 
相關問題