2013-10-24 34 views
1

我想用JavaScript處理TD中的內容,當TD內容改變時,我會做其他事情。但似乎變化事件永遠不會升起。 的HTML:HTML Table TD'change'事件無法提升?

<table><tr><td id='testTD'>Test</td></tr></table> 

的JavaScript:

jQuery().ready(function(){ 
    jQuery('#testTD').on('change', function(e){alert('td changed');}); 
    jQuery('#testTD').append('something'); //why this did not raise the 'change' event for td? 
    }); 

任何想法?

+0

您將如何更改'td'的內容?是否可編輯? –

+0

使用jQuery,就像上面的'jQuery('#testTD')。append('something');' – aaron

+0

爲什麼不''click'事件? –

回答

1

當元素值發生變化時,change事件被髮送到元素。此事件限於 <input>元素,<textarea>框和<select>元素。

來源:http://api.jquery.com/change/

如果你想火上的其他元素的變化,只需調用.change()

jQuery('#testTD').append('something').change(); 
+1

谷歌的第一個結果呢? :) – Bigood

+0

謝謝,那工作!另外的問題:在這種情況下,我們有辦法獲得舊的價值嗎? – aaron

+1

請創建一個新問題。 –

0

你在錯誤的方向前往這裏。更改事件不會觸發DOM內容更改 - 它們觸發更改下拉列表,複選框和單選按鈕的值或狀態。

有一些非標準(和瀏覽器不一致)事件可以檢測到所謂的內容變化,但正如我所說的,它們不可靠。

反而想想另一種方法。您可以使用自定義事件並在更改TD內容時觸發它,而不是嘗試直接偵聽內容更改。

+0

謝謝,你有什麼簡單的例子嗎? – aaron

+0

你的意思是'jQuery('#testTD')。append('something')。myCustomEvent();'? – aaron

+0

我明白了:'jQuery('#testTD')。append('somethingelse')。trigger('myCustomEvent');' – aaron