2015-03-25 3 views
-1

Я использую jQuery ajax. По ответу я удаляю. Но функция jQuery.on не работает.jQuery on remove not working parent node fire empty()

Пример:

<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.net https://jsfiddle.net/1zuau1f6/5/

редактировать: мой вопрос не понял. Вопрос Я исправляя ..

--- Update ---

я найти решение в рамках 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); 
+3

Там нет 'remove' события, следовательно, почему он не работает. Если вы хотите запустить блок кода при удалении DOMElement, вам нужно будет вызвать его вручную. –

+0

remove is not event in jquery –

+0

Я отредактировал ваш jsFiddle, теперь он работает. –

ответ

0

Два вопроса:

1) Вы должны включить JQuery UI, чтобы использовать событие remove.

2) Делегирование событий не работает с remove. Таким образом, использовать:

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

Working Demo

+0

@AhbapAldirmaz: извините .... я тебя не понял .. –

1

дают попробовать, как это ..

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

fiddle Demo

0
$(document).ready(function(){ 

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

Demo

Надеется, что это помогает

0

Также вы можете переопределить функцию 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); 
})