在某个函数中我删除了像$('#'+id+' img.load').remove();
这样的元素,如何跟踪此事件并运行自定义代码?
答案 0 :(得分:5)
(function($){
var remove_orig = $.fn.remove;
$.fn.remove = function(){
console.log('Remove called');
remove_orig.apply(this, arguments);
};
})(jQuery);
您可以“挂钩”任何jQuery函数,并将您自己的处理代码放在其中(包括日志记录方法),这些代码将在执行本机jQuery代码之前执行。
demo(另一个版本为selector shown)
使用上述过载很容易捕获移除。只需更改钩子以在jQuery到达之前(或之后)触发一个触发器:
(function($){
var remove_orig = $.fn.remove;
$.fn.remove = function(){
this.trigger('removing');
remove_orig.apply(this, arguments);
};
})(jQuery);
$('#foo').bind('removing',function(e){
alert('#foo is being removed');
});
$('#foo').remove();
答案 1 :(得分:3)
一种方法是“触发”自定义事件(在本例中我使用的是窗口):
$('#'+id+' img.load').remove();
$(window).trigger("MyElementRemoved", [id]);
然后在代码的另一部分“处理”事件:
$(window).bind("MyElementRemoved", function(e, elementId) {
alert("element removed: " + elementId);
}