2012-01-18 384 views
0

我有點困惑,我有一堆元素,通過使用ajax調用通過jQuery添加,我想附加一個點擊處理程序給他們(可能有很多)。

但我不知道如何開始這個,我看着.on,它真的很混亂。我想爲某個類添加一個點擊事件處理程序,這樣當我點擊它時,我會得到this.id,然後做些什麼。

回答

3

你想要做的事就是所謂的事件委託。

您希望將事件偵聽器設置在DOM中一個永遠不會更改的較高元素上,但只有在被點擊的子元素與特定選擇器匹配時才觸發事件處理函數。

下面是它與jQuery的.on()完成:

$(document).on('click', '.your-selector', function(){ 
    alert(this.id); 
}); 

附:您可以將事件偵聽器可能適用於一個元素在DOM樹低了下去......

+0

那麼你的或弓箭手的答案是更好的表現明智嗎? – Steven 2012-01-18 20:15:49

+1

這會起作用,但幾乎總會有比文檔更好的聽衆。爲了舉例說明,因爲你知道它總能正常工作。但是當Steven開始使用這些代碼時,他應該意識到他應該選擇最近的未被破壞的祖先元素。 – 2012-01-18 20:17:40

+0

@Steven - 比什麼都好?這是您唯一的選擇(除非您想在每次AJAX請求後重新綁定處理程序)。這是做到這一點的正確方法(儘管如前所述,您應該將其綁定到最低可能的DOM節點上)。 – 2012-01-18 20:18:16

1

這將讓你與類「測試」被點擊的元素的ID ...

$(".test").on("click", function() { 
    var id = $(this).attr("id") 
}); 

您需要在 ajax調用返回後運行。它只會將click事件綁定到它運行時存在的元素,所以它在document.ready中不是很好。

+0

請參閱@ Joseph的回答。 – Anurag 2012-01-18 20:15:37

+0

那麼你或約瑟夫的回答會更好的表現明智嗎? – Steven 2012-01-18 20:17:01

+0

抱歉 - 我不明白。請看約瑟夫的回答什麼? – Archer 2012-01-18 20:17:13

相關問題