有没有办法在插入html时触发事件?

时间:2012-08-02 14:33:35

标签: javascript jquery backbone.js

这是一个骨干应用, 我正在使用Jquery html()函数将我的视图模板插入到布局中,我希望每次调用jQuery的html()函数来检查页面的html时都能触发事件。 / p>

有办法吗? (比如App.on('html',blablabla ......);)

谢谢!

2 个答案:

答案 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()方法时都有程序控制 - 如果没有,那么这将更加困难,因为没有回调函数挂进去。