我想在元素的innerHTML由于“ajaxing”而改变时捕获事件。
我的意思是这样的:
$('.t_error span').html.change(function(){
...
});
感谢您的帮助!
答案 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
对象将是发生的事件。如果要查看记录的所有更改的列表,您的事件处理程序将这些作为其第一个参数,并且您是否应该捅观察者本身,这是它的第二个论点。