jQuery 一个事件阻止另一个事件被触发
jQuery one event prevents other event from being fired
我不确定我忽略了什么。如果我的设计不好或者有解决这个问题的聪明方法。
鉴于:
1 个输入字段
1 个隐藏按钮
逻辑:
如果输入字段获得焦点,则会显示隐藏按钮。
如果输入字段未聚焦,按钮将隐藏。
如果单击按钮,将调用某些函数,然后隐藏按钮。
问题是,当单击按钮时,输入字段之前没有聚焦,因此 unfocus
侦听器首先触发,而按钮单击侦听器却永远不会触发。
这是为什么?为什么两个侦听器都没有被触发?
当前代码结构:
$(someinputfield).focus(function(){
show button
}
$(someinputfield).focusout(function(){
hide button
}
$(somebutton).click(function(){
deliver();
hide button
}
deliver();
永远不会被执行!
编辑:
真正的代码在这里:
$("#input1").focus(function(){
$("#submit1").delay(600).queue(function(next){
$(this).css('display', 'block');
next();
});
});
$("#input1").focusout(function(){
$("#submit1").hide();
});
$("#submit1").click(function(){
deliver();
setTimeout(function(){
$(this).hide();
}, 2000);
});
按钮使用 input
而不是 button
。
这样,当您单击按钮时,输入将保持焦点,而不是外部。
Your selector for the .focus()
event will have to include both the input and it's button, in my example below I have simply selected ALL inputs. You will need to change this.
$(function(){
$('input').focus(function(){
$('.button').show();
});
$('input').blur(function(){
$('.button').hide();
});
$('.button').click(function(){
alert("clicked");
});
});
JSFiddle here http://jsfiddle.net/Panomosh/2cjmggqe/2/
我不确定我忽略了什么。如果我的设计不好或者有解决这个问题的聪明方法。
鉴于:
1 个输入字段
1 个隐藏按钮
逻辑:
如果输入字段获得焦点,则会显示隐藏按钮。
如果输入字段未聚焦,按钮将隐藏。
如果单击按钮,将调用某些函数,然后隐藏按钮。
问题是,当单击按钮时,输入字段之前没有聚焦,因此 unfocus
侦听器首先触发,而按钮单击侦听器却永远不会触发。
这是为什么?为什么两个侦听器都没有被触发?
当前代码结构:
$(someinputfield).focus(function(){
show button
}
$(someinputfield).focusout(function(){
hide button
}
$(somebutton).click(function(){
deliver();
hide button
}
deliver();
永远不会被执行!
编辑:
真正的代码在这里:
$("#input1").focus(function(){
$("#submit1").delay(600).queue(function(next){
$(this).css('display', 'block');
next();
});
});
$("#input1").focusout(function(){
$("#submit1").hide();
});
$("#submit1").click(function(){
deliver();
setTimeout(function(){
$(this).hide();
}, 2000);
});
按钮使用 input
而不是 button
。
这样,当您单击按钮时,输入将保持焦点,而不是外部。
Your selector for the
.focus()
event will have to include both the input and it's button, in my example below I have simply selected ALL inputs. You will need to change this.
$(function(){
$('input').focus(function(){
$('.button').show();
});
$('input').blur(function(){
$('.button').hide();
});
$('.button').click(function(){
alert("clicked");
});
});
JSFiddle here http://jsfiddle.net/Panomosh/2cjmggqe/2/