【发布时间】:2016-01-14 12:58:43
【问题描述】:
我有以下代码:
$(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();});
});
});
功能是什么? 页面加载时,按钮“不可”点击,例如。按钮什么也不做。当输入字段“名称”发生变化时,按钮“变为”可点击并调用函数alertName()。
问题是什么? 每次输入 -> 每次新的“keyup”,所以如果您在输入字段“name”中输入“Hello”并单击按钮,函数 alertName() 被触发 5 次 (H E L L O)。如果您删除它并再次单击该按钮,则会触发 10 次(H E L L O [退格]x5)。
我认为每次触发 'keyup' 事件时,函数 addSaveEvent 都会绑定在保存按钮上。但我不想要这个,我只想绑定一次,而不是 5、10、...次。
如何检查事件是否已绑定到元素?如果不是 => 绑定,如果是的话 => 没有额外的绑定(但也没有解除绑定)?
提前致谢!
PS: 我检查了以下问题: - How to check if click event is already bound - JQuery - jQuery check if event exists on element
那些是关于“点击”事件的,而不是关于“按键”事件的,我不太了解它们。 :/
【问题讨论】:
标签: javascript jquery events bind