JQuery事件跟踪

时间:2011-10-03 15:03:42

标签: javascript jquery

在某个函数中我删除了像$('#'+id+' img.load').remove();这样的元素,如何跟踪此事件并运行自定义代码?

2 个答案:

答案 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);
}