这是一个主干应用程序,我正在使用 Jquery html() 函数将我的视图模板插入到任何地方的布局中,并且我希望能够在每次调用 jQuery 的 html() 函数来检查时触发一个事件页面的html。
有没有办法做到这一点 ?(就像 App.on('html', blablabla...); )
谢谢 !
这是一个主干应用程序,我正在使用 Jquery html() 函数将我的视图模板插入到任何地方的布局中,并且我希望能够在每次调用 jQuery 的 html() 函数来检查时触发一个事件页面的html。
有没有办法做到这一点 ?(就像 App.on('html', blablabla...); )
谢谢 !
正如 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!
});
就是这样的想法,随心所欲地使用它。
AFAIK,jQueryhtml()
方法本身不会触发任何可订阅事件,但您可能会推出自己的简单观察者模式实现。我在大量项目中使用它,它提供了一种出色、干净、轻量级的方式来封装松散耦合模块之间的任意事件处理。
但是,这是假设您在每次调用该方法时都有程序控制html()
- 如果没有,那么这将更加困难,因为没有回调函数可以挂钩。