2014-03-25 85 views
3

我試圖將一個事件處理程序附加到動態變化表中的每一行,但沒有成功(使用jQuery版本1.11.0) *編輯:許多人指出出,「懸停」是depricated,但我的問題也與其他處理*jQuery .on()不綁定事件處理程序

$('#tableBody tbody').on('hover', 'tr', function() { 
    alert('hovering on a row'); 
}); 

上面的代碼是幾乎等同於jQuery的文檔 - http://api.jquery.com/on/,我嘗試了其他變化,如

存在
$(document).on('hover', '.tableRow', function(){...}); 

事件處理程序不會被添加。 我應該注意到,表格的內容通過AJAX檢索然後顯示,這就是我使用.on()方法的原因。

+0

存在'on'上V1.11?你的意思是1.11.0? 1.11很老 –

+0

如果你在那個頁面上搜索'hover',你會看到*「jQuery 1.8棄用,刪除1.9:名稱」hover「用作字符串」mouseenter mouseleave「的簡寫。」* –

+0

@Adrian Preuss,是的,我的意思是1.11.0 – Noam

回答

6

'hover'作爲字符串傳遞給.on()不再受支持(在v1.9中刪除,如.on() documentation中的「其他註釋」中所述)。相對應的是使用'mouseenter mouseleave'代替,或者如果你只是想要做的事,當鼠標進入有問題的嘗試元素(S):

$('#tableBody tbody').on('mouseenter', 'tr', function() { 

注意,#tableBody元素將需要在時間,要存在運行,因此您需要將其包含在文檔就緒處理程序中,或者包含在主體末尾的腳本元素中。

和ID 'tableBody'聽起來像它分配給<tbody>元素,這沒有任何意義,當你選擇還包括tbody#tableBody一個孩子。

+0

謝謝你指出,但我也試過'mouseenter'以及其他事件,如'點擊'沒有成功 – Noam

+0

如果你不能獲得_any_事件綁定到你的動態元素,這是一個完整的問題。在運行'.on()'代碼時'#tableBody'元素是否存在? (它需要) – nnnnnn

+0

是的,它在頁面加載時確實存在。而且就像我剛纔提到的那樣,它也不會與$(document).on(...) – Noam

1

'mouseenter'事件應該可以正常工作。

$('#myTable tbody').on('mouseenter', 'tr', function() { 
    alert('hovering on a row'); 
}); 

這是jsfiddle

相關問題