2013-01-08 105 views
2

我有一個如何處理嵌套事件的jQuery

<span class="fold"></span> 

,用一個

$('.fold').click(function (event) { ... }); 

處理現在的Click事件添加了新的「摺疊」,我想分配通過Ajax類相同的事件處理程序。這是可能的,如果是這樣的話在邏輯上我會「重新」 - 添加我的點擊處理程序?

在此先感謝

+0

http://stackoverflow.com/questions/2319790/how-to-bind-event-after-ajax-success-in-jquery – Buzz

+1

你以後的概念被稱爲_event delegation_,並且有幾種方法可以做它(一些取決於你正在使用的jQuery版本)。事件委託的更高效的使用需要更多關於標記的知識,因爲它涉及到將事件處理程序添加到與您的'class =「。fold」'元素最接近的共同祖先。 – andyb

回答

5

如果要動態地添加需要處理的元素,使用授權像這樣的事件處理程序:

$(document).on('click', '.fold', function(e) { 
    // do stuff 
}); 

請注意,爲了獲得最佳性能,您應該使用​​元素附加到的元素的選擇器替換document

+0

Spot。非常感謝:-) – CJe

+0

@CJe沒問題,樂於幫忙。 –

2

只要寫:

$(".fold").on("click", function(event){ 
    //write code 
}); 

更新:對於動態附加元素。這樣寫:

$(document).on('click', '.fold', function(e) { 
    // write code 
}); 
+1

這相當於OP已有的內容,並且不會在動態附加元素上工作 –

+0

@RoryMcCrossan爲什麼它不能在動態附加元素上工作? –

+0

@ Arvind07您需要以某種方式將它添加到元素中,_after_被追加 –