2014-10-10 148 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