0

这是一个主干应用程序,我正在使用 Jquery html() 函数将我的视图模板插入到任何地方的布局中,并且我希望能够在每次调用 jQuery 的 html() 函数来检查时触发一个事件页面的html。

有没有办法做到这一点 ?(就像 App.on('html', blablabla...); )

谢谢 !

4

2 回答 2

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!
});

就是这样的想法,随心所欲地使用它。

于 2012-08-02T14:42:14.157 回答
0

AFAIK,jQueryhtml()方法本身不会触发任何可订阅事件,但您可能会推出自己的简单观察者模式实现。我在大量项目中使用它,它提供了一种出色、干净、轻量级的方式来封装松散耦合模块之间的任意事件处理。

但是,这是假设您在每次调用该方法时都有程序控制html()- 如果没有,那么这将更加困难,因为没有回调函数可以挂钩。

于 2012-08-02T14:39:26.630 回答