2013-06-28 73 views
0

我正在尋找一種漂亮的方式來處理一個元素的附加/移除事件,而不是手動觸發事件或某種類型的東西。jQuery UL追加事件?

像這樣的事情將是驚人的:提前

$('#id').on("append", function() { ... } 

謝謝!

+0

被接受的回答非常有趣,但我一直無法使它爲刪除事件工作,照顧幫助我呢? :) –

回答

1

如說,在評論,你可以觸發一個append函數是:https://stackoverflow.com/a/7167210/2324107

但因爲刪除是有點不同,因爲:

(function($) { 
    var origAppend = $.fn.append; 

    $.fn.append = function() { 
     return origAppend.apply(this, arguments).trigger("append"); 
    }; 
})(jQuery); 

$("div").bind("append", function() { alert('Hello, world!'); }); 

$("div").append("<span>"); 

此代碼是從這個答案取沒有任何參數,您將需要定位元素的父元素。我之前修改了一些代碼並得到了這個結果:

var origRemove = $.fn.remove; 

$.fn.remove = function() { 
    if(arguments.length){ 
     return origRemove.apply(this, arguments).trigger("remove"); 
    }else{ 
     var $parent = this.parent(); 
     console.log(this) 
     origRemove.apply(this, arguments); 
     $parent.trigger('remove'); 
     return this 
    } 
}; 

如果有參數,它會在選定的元素上觸發。例如,$('body').remove('div');將在body上觸發remove事件。但是如果你寫$('div').remove();,它會觸發div的父項。

我做了一個小提琴,一起來看看:http://jsfiddle.net/ZxdU3/

事件監聽器將appendremove。它不會觸發你是否使用任何其他DOM插入功能(after,before或甚至appendTo)。

+0

這是一個很棒的迴應,幾乎解決了我的問題。非常感謝好先生! –