.remove事件触发.blur事件 - 如何逃避?

时间:2013-08-19 17:18:49

标签: jquery

我将.blur()事件绑定到一个元素。每当我使用$(elem).remove()方法删除元素时,都会针对同一元素触发.blur事件。 这是jsFiddle - 要查看案例,请单击蓝色div并按任意键。

这是代码: HTML:

<div id="container"></div>
<ul id="tr"></ul>

CSS:

#container {
    width:100px;
    height:100px;
    background:blue;
    position:relative;
    cursor:pointer;

} JS:

$("#tr").on('keydown', '#ti', function() {
    $(this).remove();
});
$("#tr").on('blur', '#ti', function() {
    alert('blur is triggered');
});
$('#container').on('click', function() {
 var item = '<li id="ti" contenteditable="true"></li>';
 $("#tr").append(item);
 $("#ti").last().focus();
});

如果删除元素,如何阻止.blur事件?或者我怎么知道事件被触发了我的元素删除?

2 个答案:

答案 0 :(得分:4)

您可以在删除元素之前简单地调用unbind - 函数。那应该可以解决你的问题。代码:

$(elem).unbind();

这将取消绑定绑定到该对象的任何操作。

答案 1 :(得分:2)

在删除项目之前删除模糊事件

$("#tr").on('keydown', '#ti', function() {
    $(this).off('blur');
    $(this).remove();
});