我有點困惑,我有一堆元素,通過使用ajax調用通過jQuery添加,我想附加一個點擊處理程序給他們(可能有很多)。
但我不知道如何開始這個,我看着.on,它真的很混亂。我想爲某個類添加一個點擊事件處理程序,這樣當我點擊它時,我會得到this.id
,然後做些什麼。
我有點困惑,我有一堆元素,通過使用ajax調用通過jQuery添加,我想附加一個點擊處理程序給他們(可能有很多)。
但我不知道如何開始這個,我看着.on,它真的很混亂。我想爲某個類添加一個點擊事件處理程序,這樣當我點擊它時,我會得到this.id
,然後做些什麼。
你想要做的事就是所謂的事件委託。
您希望將事件偵聽器設置在DOM中一個永遠不會更改的較高元素上,但只有在被點擊的子元素與特定選擇器匹配時才觸發事件處理函數。
下面是它與jQuery的.on()
完成:
$(document).on('click', '.your-selector', function(){
alert(this.id);
});
附:您可以將事件偵聽器可能適用於一個元素在DOM樹低了下去......
這將讓你與類「測試」被點擊的元素的ID ...
$(".test").on("click", function() {
var id = $(this).attr("id")
});
您需要在 ajax調用返回後運行。它只會將click事件綁定到它運行時存在的元素,所以它在document.ready中不是很好。
那麼你的或弓箭手的答案是更好的表現明智嗎? – Steven 2012-01-18 20:15:49
這會起作用,但幾乎總會有比文檔更好的聽衆。爲了舉例說明,因爲你知道它總能正常工作。但是當Steven開始使用這些代碼時,他應該意識到他應該選擇最近的未被破壞的祖先元素。 – 2012-01-18 20:17:40
@Steven - 比什麼都好?這是您唯一的選擇(除非您想在每次AJAX請求後重新綁定處理程序)。這是做到這一點的正確方法(儘管如前所述,您應該將其綁定到最低可能的DOM節點上)。 – 2012-01-18 20:18:16