change()
函数工作并检测表单元素的变化,但是有没有办法检测 DOM 元素的内容何时发生变化?
这不起作用,除非#content
是表单元素
$("#content").change( function(){
// do something
});
我希望在执行以下操作时触发:
$("#content").html('something');
也html()
或append()
函数没有回调。
有什么建议?
change()
函数工作并检测表单元素的变化,但是有没有办法检测 DOM 元素的内容何时发生变化?
这不起作用,除非#content
是表单元素
$("#content").change( function(){
// do something
});
我希望在执行以下操作时触发:
$("#content").html('something');
也html()
或append()
函数没有回调。
有什么建议?
我知道这篇文章已经有一年了,但我想为那些有类似问题的人提供不同的解决方案:
jQuery 更改事件仅用于用户输入字段,因为如果操作其他任何内容(例如,div),则该操作来自代码。因此,找到操作发生的位置,然后在那里添加您需要的任何内容。
但是,如果由于任何原因这不可能(您使用的是复杂的插件或找不到任何“回调”可能性),那么我建议的 jQuery 方法是:
一个。对于简单的 DOM 操作,使用 jQuery 链接和遍历,$("#content").html('something').end().find(whatever)....
湾 如果您想做其他事情,请使用bind
带有自定义事件的jQuery和triggerHandler
$("#content").html('something').triggerHandler('customAction');
$('#content').unbind().bind('customAction', function(event, data) {
//Custom-action
});
这是 jQuery 触发器处理程序的链接:http : //api.jquery.com/triggerHandler/
浏览器不会触发<div>
元素的 onchange 事件。
我认为这背后的原因是这些元素不会改变,除非被 javascript 修改。如果您已经不得不自己修改元素(而不是用户自己修改),那么您可以在修改元素的同时调用相应的随附代码,如下所示:
$("#content").html('something').each(function() { });
您还可以手动触发这样的事件:
$("#content").html('something').change();
如果这些解决方案都不适用于您的情况,能否请您提供更多有关您具体要完成的工作的信息?
$(document).bind("DOMSubtreeModified",function(){
console.log($('body').width() + ' x '+$('body').height());
})
此事件已被弃用,取而代之的是Mutation Observer API
尝试绑定到DOMSubtreeModified
事件 seeign,因为测试也只是 DOM 的一部分。
在 SO 上看到这篇文章: