jQuery .remove()方法不会触发.on('remove')事件 [英] jquery .remove() method doesn't trigger .on('remove') event

查看:441
本文介绍了jQuery .remove()方法不会触发.on('remove')事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用.remove()方法删除一个html元素,与此同时,我有一个事件处理程序,但未触发该事件处理程序.为什么会这样呢?这是 jsFiddle 和代码: HTML

I'm removing an html element with .remove() method and at the same time for this element I have an event handler but it is not triggered. Why can that be? Here is the jsFiddle and code: HTML

<span id='del_span'>Delete</span><br>
<span id='to_del'>I'm going to be deleted</span>

JS

$('#del_span').click(function() {
    $('#to_del').remove();
});
$('#to_del').on('remove', function() {
    alert("I'm being deleted"); //is never triggered
});

推荐答案

remove()方法不会自动触发remove事件(因为不存在此类事件),但是您可以使用自定义手动进行操作事件:

The remove() method doesn't automatically trigger a remove event (because no such event exists), you can do it manually though, with a custom event:

$('#del_span').click(function() {
    $('#to_del').trigger('remove').remove();
});
$('#to_del').on('remove', function() {
    alert("I'm being deleted"); //is never triggered
});

JS小提琴演示.

偶然地,在那些支持突变事件的浏览器中,您可以使用:

Incidentally, in those browsers that support mutation events you could use:

$('#del_span').click(function() {
    $('#to_del').remove();
});
$('body').on('DOMNodeRemoved', '#to_del', function() {
    alert("I, " + this.id + " am being deleted");
});

JS小提琴演示.

参考文献:

这篇关于jQuery .remove()方法不会触发.on('remove')事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆