我有以下代码:
$(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函数都会在save按钮上绑定。但我不想要这个,我只希望它只被绑定一次,而不是5,10,......次。
如何检查事件是否已绑定到元素?如果不是=> bind,if so =>没有额外的绑定(但也没有解除绑定)?
提前致谢!
PS: 我检查了以下问题: - How to check if click event is already bound - JQuery - jQuery check if event exists on element
这些是关于'点击'事件,而不是'keyup'事件,我不太了解它们。 :/
答案 0 :(得分:0)