我有一个附加到我的文档的keydown事件处理程序,因此我可以在任何地方观看keydown事件。但是,在满足条件后,我希望能够仅删除该处理程序。我怎样才能做到这一点?
这是我当前的处理程序:

    $(document).keydown(function(event){
        console.log(event);

        var tag = event.target.tagName.toLowerCase();
        if(event.which = 27 && tag != 'input' && tag != 'textarea'){    //escape has been pressed
            _dismissModal(modal_id);
        }
    });
我想在调用keydown后删除此_dismissModal事件处理程序。如何在不删除所有keydown事件处理程序的情况下执行此操作?

最佳答案

您可以使用jquery off()方法。您还可以将keydown逻辑放入一个单独的函数中,以便只能在off方法中定位该keydown Action 。

var mykeydownfunction= function(){
    console.log(event);

    var tag = event.target.tagName.toLowerCase();
    if(event.which = 27 && tag != 'input' && tag != 'textarea'){    //escape has been pressed
        _dismissModal(modal_id);
        $(this).off('keydown', mykeydownfunction);// $(this) is the document
    }
}

 $(document).on('keydown', mykeydownfunction);

关于javascript - 在事件处理程序内部删除jQuery事件处理程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21415897/

10-12 15:29