3

イベントを.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 イベントを防ぐにはどうすればよいですか? または、イベントが要素の削除をトリガーしたことをどのように知ることができますか?

4

2 に答える 2

6

unbind要素を削除する前に、単に -function を呼び出すことができます。それはあなたの問題を解決するはずです。コード:

$(elem).unbind();

これにより、オブジェクトにバインドされているすべてのアクションがアンバインドされます。

于 2013-08-19T18:02:12.163 に答える
4

アイテムを削除する前にぼかしイベントを削除してください

$("#tr").on('keydown', '#ti', function() {
    $(this).off('blur');
    $(this).remove();
});
于 2013-08-19T18:04:47.557 に答える