检查事件是否已绑定(KEYUP)



我得到了以下代码:

$(function(){
    var $name = $('#name'),
        $save = $('#save');
    function alertName(){
        var name = $name.val();
        return alert(name);
    };
    function addSaveEvent(elem){
        return elem.bind('click',function(e){e.preventDefault();alertName();});
    };
    $name.bind('keyup',function(){addSaveEvent($save);});
    $(window).load(function(){
        $save.bind('click',function(e){e.preventDefault();});
    });
});

功能是什么加载页面时,按钮"不"可点击,例如按钮不起任何作用。当输入字段"name"更改时,按钮"变为"可点击,并将调用函数alertName()。

问题出在哪里每次键入内容->每次键入新的"keyup",因此如果您在输入字段"name"中键入"Hello"并单击按钮,则函数alertName()将触发5次(H E L L O)。如果你删除这个并再次点击按钮,它会被触发10次(H E L L O[退格]x5)。

我认为每次触发"keyup"事件时,函数addSaveEvent都绑定在保存按钮上。但我不想这样,我只想只绑定一次,而不是5、10、。。。时间。

如何检查事件是否已绑定到元素?如果不是=>绑定,如果是=>没有额外的绑定(但也没有解除绑定)

提前感谢!

PS:我检查了以下问题:-如何检查点击事件是否已绑定-JQuery-jQuery检查元素上是否存在事件

这些是关于"点击"事件,而不是关于"keyup"事件,我不太理解它们。:/

$name.one('keyup',function(){addSaveEvent($save);});

jQuery文档for one

简而言之:绑定第一次触发时调用并删除的事件处理程序。

最新更新