0

我是 jQuery 的初学者,我添加了一个 jQuery,以便在按钮焦点消失时(在元素外部单击)保持某些 div 元素处于视图中并隐藏其他 div 元素。但是,当您单击按钮时,您会看到“显示的”元素。我该如何防止这种情况发生?我尝试了一个.mousedown return default动作,但没有运气。

$(".table-btn").focusout(function() {
            $("#pricelist0").show();
            $("#pricelist1, #pricelist2").hide();
    })

编辑:
我创建了一个小提琴以使问题更加明显,因此当您单击另一个按钮时,会出现 pricelist0。

额外:
使用给定的答案,并且在单击某些元素时能够不失去按钮的焦点,您可以另外添加以下代码。其中任何元素都是您希望使按钮保持焦点的元素。

var lastFocus;
    $("any element").mousedown(function(e) {
    return false;
    });    
    $(".table-btn").blur(function() {
        lastFocus = this;
    });
4

1 回答 1

0

当您单击#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();
});
于 2018-06-22T13:46:05.353 回答