这是一个骨干应用, 我正在使用Jquery html()函数将我的视图模板插入到布局中,我希望每次调用jQuery的html()函数来检查页面的html时都能触发事件。 / p>
有办法吗? (比如App.on('html',blablabla ......);)
谢谢!
答案 0 :(得分:3)
正如Marc B所说,DOM MutationEvents在某些浏览器上可用(并不多)。默认情况下,jQuery在使用html
时不会触发任何事件,但您可以为此定义自己的行为,例如:
(function($) {
var html_ref = $.fn.html;
$.fn.extend({
html : function() {
$(document).trigger( 'html_change' );
return html_ref.apply(this, arguments);
}
});
})($);
它应该工作,但没有测试它。您可以使用.text
方法。现在你可以简单地使用:
$(document).bind( 'html_change', function() {
// Hurray! Html changed!
});
这就是想法,按照你的意愿使用它。
答案 1 :(得分:0)
AFAIK,jQuery html()
方法本身不会触发任何可订阅事件,但您可能会推出自己的简单Observer pattern实现。我在大量项目中使用它,它提供了一种很好的,干净的,轻量级的方法来封装松散耦合模块中的任意事件处理。
但是,这假设您每次调用html()
方法时都有程序控制 - 如果没有,那么这将更加困难,因为没有回调函数挂进去。