当一个元素的innerHTML因为"ajaxing“而改变的时候,我想捕捉这个事件。
我的意思是这样的:
$('.t_error span').html.change(function(){
...
});感谢您的帮助!
发布于 2011-07-21 17:39:46
没有办法做你要求的事情--但是,你可以使用下面的结构:
$.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 + '!'});
}
});发布于 2014-06-17 03:15:47
在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对象将是发生事件的节点。如果您想要查看记录的所有更改的列表,您的事件处理程序将这些更改作为其第一个参数,如果您想查看观察者本身,则这是它的第二个参数。
发布于 2011-07-21 17:38:50
而不是监视更改,为什么不简单地将该函数包含到AJAX更新中。请参阅文档的回调部分:http://api.jquery.com/jQuery.ajax/
https://stackoverflow.com/questions/6774043
复制相似问题