2014-12-09 79 views
0

我想触发从DOM中删除元素的事件。可悲的是我必须使用原来的.remove(),因为它是从外部脚本调用的。所以我扩展jQuery为了赶上事件:触发自定义jQuery事件并延迟它

var oldRemove = $.fn.remove; 
$.fn.remove = function(){ 
    this.trigger('remove'); 
    return oldRemove.apply(this, arguments); 
}; 

这工作正常。我可以这样使用它:

$('ul').find('li').on('remove', function(e){ 
    console.log('EVENT REGGED'); 
}); 

我想使用此代码,以突出的元素的缺失。示例:将元素的颜色设置为红色,等待2秒钟然后将其删除。

什么是最优雅的方式来做到这一点?我已经尝试过e.preventDefault()e.stopPropagation或从触发器返回某些内容,但没有任何效果。

这里有一个小提琴,所以你可以测试一下:http://jsfiddle.net/xahthnjz/

我能以第一突出元素,然后延迟删除吗?

回答

1

您可以在自定义jQuery函数中使用setTimeout来处理在应用颜色更改后删除项目。我在这里举了一个例子:http://jsfiddle.net/mkjj94m1/2/

我已将函数更名为deleteItem,因为remove是现有的jQuery函数。

+0

对不起,我忘了提及我无法控制最初调用方法的名称。 '.remove()'总是被另一个脚本调用。我需要触发这种方法。反正比你! :) – YMMD 2014-12-09 12:45:41