首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >事件,当(内部) html更改时

事件,当(内部) html更改时
EN

Stack Overflow用户
提问于 2011-07-21 17:34:36
回答 3查看 3.5K关注 0票数 3

当一个元素的innerHTML因为"ajaxing“而改变的时候,我想捕捉这个事件。

我的意思是这样的:

代码语言:javascript
复制
$('.t_error span').html.change(function(){
... 
});

感谢您的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-21 17:39:46

没有办法做你要求的事情--但是,你可以使用下面的结构:

代码语言:javascript
复制
 $.ajax({
   type: "GET",
   url: yourUrl:,
   success: function (data) {
       ajaxComplete();
   }
 });

代码语言:javascript
复制
 function ajaxComplete()
 { 
    ....
 }

编辑:如果你想更聪明,你可以使用Custom Events

基本上定义一个CustomEvent函数:

代码语言:javascript
复制
var CustomEvent = function() {
  //name of the event
  this.eventName = arguments[0];
  var mEventName = this.eventName;

  //function to call on event fire
  var eventAction = null;

  //subscribe a function to the event
  this.subscribe = function(fn) {
    eventAction = fn;
  };

  //fire the event
  this.fire = function(sender, eventArgs) {
    this.eventName = eventName2;
    if(eventAction != null) {
        eventAction(sender, eventArgs);
    }
    else {
        alert('There was no function subscribed to the ' + mEventName + ' event!');
    }
  };
};

然后,您只需要在某个位置创建CustomEvent类的一个实例:

代码语言:javascript
复制
 var myEvent = new CustomEvent("my event");

在您的页面中,订阅它:

代码语言:javascript
复制
 myEvent.subscribe(function(sender, eventArgs) {
    alert(eventArgs.message);
 });

并在Ajax调用成功函数中触发它:

代码语言:javascript
复制
$.ajax({
   type: "GET",
   url: yourUrl:,
   success: function (data) {
       myEvent.fire(null, {message: 'you just witnessed the firing of a custom event called ' + this.eventName + '!'});
   }
});
票数 0
EN

Stack Overflow用户

发布于 2014-06-17 03:15:47

all modern browsers中,您可以使用MutationObserver api监视任何DOM节点或子树的结构变化。如果你不太关心这些变化是什么,只想倾听它们并采取行动,你可以使用一个非常小的库,类似于你所要求的。在this JSFiddle中尝试一下

代码语言:javascript
复制
// a minimal jQuery library for reacting to innerHTML changes
(function($) {
  $.fn.change = function(cb, e) {
    e = e || { subtree:true, childList:true, characterData:true };
    $(this).each(function() {
      function callback(changes) { cb.call(node, changes, this); }
      var node = this;
      (new MutationObserver(callback)).observe(node, e);
    });
  };
})(jQuery);

用法:$(elements).change(callback, optional_events),其中elements是您关心的元素(或它们的选择器),callback是您的函数,optional_events在给定时是具有W3C spec允许您监视的属性或上面的默认设置的对象。与典型的jQuery事件处理程序一样,回调的this对象将是发生事件的节点。如果您想要查看记录的所有更改的列表,您的事件处理程序将这些更改作为其第一个参数,如果您想查看观察者本身,则这是它的第二个参数。

票数 2
EN

Stack Overflow用户

发布于 2011-07-21 17:38:50

而不是监视更改,为什么不简单地将该函数包含到AJAX更新中。请参阅文档的回调部分:http://api.jquery.com/jQuery.ajax/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6774043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档