移除不工作的父节点时的jQuery激发empty()



我使用jQuery ajax。根据我删除或添加的答案。但是jQuery.on函数不起作用。

示例:

<div id="selector">
    <span>Hello World</span>
</div>
$(document).ready(function(){
    $(document).on('remove','span',function(){
        alert(" first object object deleted");
    });
    setTimeout(function(){
        $('#selector').empty();
    },3000);
});

jsFiddle.nethttps://jsfiddle.net/1zuau1f6/5/

编辑:我的问题没有被理解。我正在纠正的问题。。

---更新---

我在jquery.ui框架中找到解决方案

$.cleanData = ( function( orig ) {
    return function( elems ) {
        var events, elem, i;
        for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
            try {
                // Only trigger remove when necessary to save time
                events = $._data( elem, "events" );
                if ( events && events.remove ) {
                    $( elem ).triggerHandler( "remove" );
                }
                // Http://bugs.jquery.com/ticket/8235
            } catch ( e ) {}
        }
        orig( elems );
    };
} )( $.cleanData );

尝试一下。。

setTimeout(function(){
    $('#selector').trigger('remove').remove();       
},3000);

小提琴演示

两个问题:

1) 您必须包含jquery UI库才能使用remove事件。

2) 事件委派不适用于remove。因此使用:

$('div').on('remove',function(){
    alert(" first object object deleted");
});

工作演示

$(document).ready(function(){
  $(document).on('remove','div',function(){
    alert("Element was removed");
   });     
  setTimeout(function(){
    $('#selector').trigger('remove');
   },3000);
}); 

演示

希望这能帮助

您还可以覆盖jQuery.remove()函数:

$(function(){
    var origRemove = $.fn.remove;
    $.fn.remove = function newRemove() {
        var jQ = this.trigger("remove");
        return origRemove.apply(jQ, arguments);
    };    
    $(document).on('remove','div',function(){
        alert("object gonna be deleted");
    });
    setTimeout(function(){
        $('#selector').remove();        
    },3000);
})

最新更新