如何在 focusout 事件中防止 mousedown 事件?
How to prevent mousedown event in focusout event?
我是 jQuery 的初学者,我添加了一个 jQuery 以保持某些 div 元素可见,而其他 div 元素在聚焦时隐藏按钮消失了(在元素外部单击)。但是,当您单击该按钮时,您会看到 "shown" 元素。我如何防止这种情况发生?我尝试了 .mousedown
return default
操作,但没有成功。
$(".table-btn").focusout(function() {
$("#pricelist0").show();
$("#pricelist1, #pricelist2").hide();
})
编辑:
我创建了一个 fiddle 以使问题更明显,因此当您单击另一个按钮时,会出现 pricelist0。
额外:
使用给定的答案,并且为了能够在单击某些元素时不松开按钮的焦点,您可以另外添加以下代码。任何元素是您希望使按钮保持焦点的元素。
var lastFocus;
$("any element").mousedown(function(e) {
return false;
});
$(".table-btn").blur(function() {
lastFocus = this;
});
当您单击 #pricelist1
或 #pricelist2
时,它会触发另一个按钮的 focusout
,这就是显示 #pricelist0
的原因。
试试这个;
$(document).on("click", ":not(.table-btn)", function(e){
if(e.target !== this)
return;
$("#pricelist0").show();
$("#pricelist1, #pricelist2").hide();
});
$("#1").click(function(){
$("#pricelist1").show();
$("#pricelist2, #pricelist0").hide();
});
$("#2").click(function(e){
$("#pricelist2").show();
$("#pricelist1, #pricelist0").hide();
});
我是 jQuery 的初学者,我添加了一个 jQuery 以保持某些 div 元素可见,而其他 div 元素在聚焦时隐藏按钮消失了(在元素外部单击)。但是,当您单击该按钮时,您会看到 "shown" 元素。我如何防止这种情况发生?我尝试了 .mousedown
return default
操作,但没有成功。
$(".table-btn").focusout(function() {
$("#pricelist0").show();
$("#pricelist1, #pricelist2").hide();
})
编辑:
我创建了一个 fiddle 以使问题更明显,因此当您单击另一个按钮时,会出现 pricelist0。
额外:
使用给定的答案,并且为了能够在单击某些元素时不松开按钮的焦点,您可以另外添加以下代码。任何元素是您希望使按钮保持焦点的元素。
var lastFocus;
$("any element").mousedown(function(e) {
return false;
});
$(".table-btn").blur(function() {
lastFocus = this;
});
当您单击 #pricelist1
或 #pricelist2
时,它会触发另一个按钮的 focusout
,这就是显示 #pricelist0
的原因。
试试这个;
$(document).on("click", ":not(.table-btn)", function(e){
if(e.target !== this)
return;
$("#pricelist0").show();
$("#pricelist1, #pricelist2").hide();
});
$("#1").click(function(){
$("#pricelist1").show();
$("#pricelist2, #pricelist0").hide();
});
$("#2").click(function(e){
$("#pricelist2").show();
$("#pricelist1, #pricelist0").hide();
});