我在.keypress()
事件中发生了.click()
事件。用户第一次点击该元素时,一切正常,但后续点击会再次触发.keypress()
事件而不会关闭"第一个。我已经尝试添加event.cancelBubble = true;
和一个空的return语句来打破这个函数,但它没有工作,因为可预见的是,执行中的其余代码都没有被执行但事件仍处于活动状态,按键仍然可以触发它。有没有办法在点击foo时关闭.keypress()
事件?
$(foo).click(function(){
//Do stuff
$(foo).keypress(function(event) {
//Do stuff
});
});
答案 0 :(得分:4)
你的意思是keypress
不止一次打电话吗?
在您的代码中,每次单击foo时,都会在keypress
事件中添加一个新的匿名函数。
在绑定新处理程序
之前取消绑定前一个keypress
事件处理程序
$(foo).click(function(){
//Do stuff
$(foo).off('keypress').on('keypress', function(event) {
//Do stuff
});
});
答案 1 :(得分:0)
我不完全确定您要问的是什么,但我认为您想在第一次点击后关闭按键。这应该切换它,虽然你可能想让pressed
var global;也许
$(foo).click(function(){
//Do stuff
var pressed = false;
$(foo).keypress(function(event) {
if(!pressed){
//Do stuff
pressed = true;
} else {
event.off();
pressed = false;
}
});
});
这里的关键是event.off()
,它将删除监听器。