2014-10-10 158 views
1

我需要捕獲TD下面的更改事件。無論何時其內容發生變化(在本例中爲「羅斯蒙特測量」),我需要調用一個函數。我不認爲它接受「onchange」屬性...所以這就是問題所在。這可以做到嗎?如何捕獲onchange事件​​

<TD style="PADDING-LEFT: 6px; CURSOR: default" id="A0.R0.Indexed Pick 3" class="fv fvu" title="Rosemount Measurement" _savedBKClr>Rosemount Measurement</TD> 

我會發布代碼的更大部分的打印屏幕,其中包含上面的行(以防它有幫助)。

context for code

+0

http://stackoverflow.com/questions/17470715/onchange-event-for-html-form-elements-in-td-tag-with-chrome。看到這個問題可能會幫助你。 – 2014-10-10 07:00:06

+0

也讀這個http://stackoverflow.com/questions/2844565/is-there-a-jquery-dom-change-listener – GramThanos 2014-10-10 07:07:48

回答

0

我會建議使用自定義事件,例如contentchange,並從使內容更改的src中觸發它。

訂閱事件

$('table.yourClassName').on('contentchange', 'td', fn); 

在內容更改代碼

$(refToTheTd).trigger('contentchange'); 
+0

Downvoted和沒有評論。請問爲什麼? – anddoutoi 2014-10-11 14:12:51

+0

謝謝!這個作品+1 – 2017-02-25 01:02:26

0

TD沒有改變事件,因爲它不具有價值,它只是裏面擁有一些文字。它爲它創建一個自定義事件的唯一方法(需要內部更改文本後自己觸發事件)

setTimeout(function() { 
 
    $('td').text(function() { 
 
    return this.innerHTML + '... success?'; 
 
    }).trigger('custom:td:name_whatever.event'); 
 
}, 1000); 
 

 
$('td').on('custom:td:name_whatever.event', function(){ 
 
    alert(this.innerHTML); 
 
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td>Test</td> 
 
    </tr> 
 
</table>

0

我發現可以爲我的要求工作的解決方案,但我還沒有適應它,但(仍在試圖弄清楚):

//assume tbl has id foobar 
document.getElementById('foobar').addEventListener('change',function(e) 
{ 
    e = e || window.event; 
    var target = e.target || e.srcElement; 
    var name = target.id || target.getAttribute('name'); 
    alert('the ' + name + ' element changed!'); 
},false); 

不幸的是上面提供的兩種解決方案沒有爲我的要求工作。

+0

這個效果很好,除了一件事:它不捕獲對'​​'中的文字所做的更改。請參閱: [鏈接](http://stackoverflow.com/questions/26342367/event-listener-for-td-content) – letsplay14me 2014-10-13 19:47:20