事件,当(内部)html发生变化时

时间:2011-07-21 09:34:36

标签: jquery

我想在元素的innerHTML由于“ajaxing”而改变时捕获事件。

我的意思是这样的:

$('.t_error span').html.change(function(){
... 
});

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

没有办法做你所要求的 - 但是,你可以使用这个结构:

 $.ajax({
   type: "GET",
   url: yourUrl:,
   success: function (data) {
       ajaxComplete();
   }
 });

 function ajaxComplete()
 { 
    ....
 }

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

基本上定义一个CustomEvent函数:

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类的实例:

 var myEvent = new CustomEvent("my event");

在您的信息页中,订阅:

 myEvent.subscribe(function(sender, eventArgs) {
    alert(eventArgs.message);
 });

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

$.ajax({
   type: "GET",
   url: yourUrl:,
   success: function (data) {
       myEvent.fire(null, {message: 'you just witnessed the firing of a custom event called ' + this.eventName + '!'});
   }
});

答案 2 :(得分:0)

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

// 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对象将是发生的事件。如果要查看记录的所有更改的列表,您的事件处理程序将这些作为其第一个参数,并且您是否应该捅观察者本身,这是它的第二个论点。