插入html时是否有触发事件的方法

Is there a way to trigger an event when inserting html?

本文关键字:事件 方法 html 是否 插入      更新时间:2024-07-03

它用于主干应用程序,我正在使用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,jQuery html()方法本身不会激发任何可订阅的事件,但您可能会推出自己的简单Observer模式实现。我在大量项目中都使用了这种方法,它提供了一种很好的、干净的、轻量级的方式来封装松散耦合模块中的任意事件处理。

但是,这是假设您对每次调用html()方法都有编程控制权——如果没有,那么这将更加困难,因为没有可挂接的回调函数。