插入html时是否有触发事件的方法
Is there a way to trigger an event when inserting html?
它用于主干应用程序,我正在使用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()
方法都有编程控制权——如果没有,那么这将更加困难,因为没有可挂接的回调函数。
相关文章:
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 如何在所有ng点击事件AngularJS上启动一个方法
- 关闭第二个事件源上的第一个事件源's onopen方法
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 异步处理所有事件处理程序的方法
- 调用DOM提交方法时未激发jQuery提交事件
- 如何收听骨干事件方法上的keydown
- 服务器发送的事件方法未由 Firefox 处理
- Javascript - 事件方法中的引用对象
- jQuery委托事件方法对网格的好处
- 通过mixin使用Backbone.View事件方法
- 如何在传单中使用 .off() 事件方法.js
- 在完整日历上使用客户端事件方法过滤事件
- Backbone.js once()事件方法:计数器增量示例
- 不同事件方法的代码重用
- jQuery事件方法:如何更改javascript'单击'事件到'永远开火;
- JQuery事件方法影响类的一个元素
- 合并jQuery事件方法的正确方法
- 如何在angular 2中动态地将params传递到点击事件方法中