2011-12-08 46 views

回答

43

對於#dataTable tbody中的未來元素,您的代碼應該可以工作。委派單擊一路攀升到文檔,從而爲未來的<tr>頁面上的任何位置相同的處理,請嘗試:

$(document).on("click", "tr", function(event){ 
    alert($(this).text()); 
}); 
+0

所以你所說的是「on」也是爲了當前和未來的dom? –

+5

是的,只要插入的元素位於綁定事件的元素內部。 – David

+0

正是我需要的。我愛你 –

0

你必須使用jQuery的 .live()爲未來元素

錯了,因爲這是jQuery的1.7(我是在張貼我的回答快)。

.on()適用於所有(未來)要素。

+1

????我在說1.7 + –

+1

錯了。這是1.7。 – SLaks

+0

它已被棄用1.7,而不是你有['.on()'](http://api.jquery.com/on/) –

1

這將處理所有<tr> s,無論它們何時創建,但僅限於當前存在的#dataTable tbody
這相當於.delegate

+0

所以有「已經在dom」和「將在dom」之間沒有什麼區別? –

+0

仍然存在差異,但是delegate(),live()和on()可以處理兩者。 – Stefan

+0

@Stefan自1.7以後我不應該再使用live了,代表就像......所以沒有區別了吧? –

0

api.jquery.com/on/

的。對()方法附加事件處理程序到當前選定設置在jQuery對象元素 。從jQuery 1.7開始,.on()方法 提供了附加事件處理程序所需的全部功能。有關 幫助轉換舊的jQuery事件方法,請參閱.bind(), .delegate()和.live()。要移除使用.on()綁定的事件,請參閱 .off()。要附加只運行一次,然後刪除 本身的事件,請參閱。一()

和從api.jquery.com/live/

在jQuery 1.7的,所述.live()方法被棄用。使用.on()連接到事件處理程序 。老版本jQuery的用戶應該優先使用 .delegate(),而不是.live()。

3

添加到戴維斯接受的答案,你也可以使用此解決方案綁定多個事件一個選擇器以及所有未來的匹配元素。

例如輸入元素。

$(document).on({ 
    focus:function(){ 
     alert($(this).val()); 
    }, 
    blur: function(){ 
     alert($(this).val()); 
    } 
}, 'input[type=text]');