2014-12-09 73 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