2012-08-16 90 views
3

如果我一個函數分配給一個變量foo的,有沒有辦法選擇不具備的所有元素給定的,他們通過像$('.elementsWithClass').click(foo)結構分配結合選擇所有沒有綁定到給定函數的元素?

我的動機是我們有ajax請求替換部分DOM,我需要一個簡單的方法來重新綁定不基於.live/.on的事件處理程序,因爲我們在應用程序的某些部分控制事件冒泡。

+1

[測試如果事件處理程序綁定到jQuery中的元素](http://stackoverflow.com/questions/1236067/test-if-event-handler-is-bound-to-an-element-in -jquery) – MrOBrian 2012-08-16 18:36:02

回答

3

關於這樣做的動機,由於它們被分配了$(".elementsWithClass").click(foo),所以應該在DOM更新後重新選擇它們。

$("#container").load("/new/content.html", function() { 
    $(this).find(".elementSWithClass").click(foo); 
}); 

因爲他們需要反彈,這必然意味着他們已經被更換,這意味着它不會做任何好他們根據他們是否有一個處理程序來選擇。

+0

我建議在再次綁定之前解除綁定,因爲在頁面上可能有先前綁定的元素。或者防止foo內冒泡。例如:http://jsfiddle.net/gromer/QAyB5/。如果取消註銷解除綁定行,則每次單擊只會將一行寫入控制檯(單個函數調用)。評論時,您會爲每個點擊綁定獲取一行。 – Gromer 2012-08-16 18:48:14

+0

@Gromer:這取決於DOM如何被替換。以我的例子來說,'#容器'內的所有內容都將被替換,因此不需要手動解除綁定。綁定只發生在#容器內。如果我們從'document'解除綁定,我們可能會解除一些不應該綁定的綁定。 – 2012-08-16 18:50:03

+0

啊,好點,因爲容器內容被*取代*。好的電話,先生! – Gromer 2012-08-16 18:51:36

相關問題