javascript – Bootstrap工具提示在第二次’show’后消失

我想根据一些用户输入生成手动工具提示.最简单的方法是隐藏所有工具提示,然后显示相关的工具提示.

我已将代码缩减为基本要素,并且在第二次“显示”后我的工具提示仍然消失.

我正在使用bootstrap 3.3.4和jquery 2.1.3

在隐藏之后立即做一个节目是否有问题,或者我在代码中遗漏了什么?

<input id="check" type="checkbox">

<script>
    var toolTipData = {
    placement: 'right',
    title: 'Checkmark checked',
    trigger: "manual"
};
$('#check').tooltip(toolTipData);

$(document).on('change', '#check', function () {
    $('#check').tooltip("hide");
    if (document.getElementById("check").checked) {
        $('#check').tooltip("show");
    }
});
</script>

这是一个jsfiddle:https://jsfiddle.net/bbrally/4b9g0abh/

解决方法:

您在“隐藏”事件发生和“显示”事件发生之间遇到了竞争条件.根据文档,“隐藏/显示”事件实际上会在“隐藏/显示”事件触发之前返回给调用者.

http://getbootstrap.com/javascript/#tooltips
向下滚动到工具提示下的“方法”部分
…在实际隐藏工具提示之前返回调用者…

…在实际显示工具提示之前返回调用者…

我不是建议下面的代码是一个解决方案(但是,它可能已经足够好了?),但是解释了你遇到的问题.具体来说,250ms的超时值会使其慢下来,使其按照您的意图运行.

var toolTipData = {
        placement: 'right',
        title: 'Checkmark checked',
        trigger: "manual"
    };
    $('#check').tooltip(toolTipData);

    $(document).on('change', '#check', function () {
        $('#check').tooltip("hide");
        if (document.getElementById("check").checked) {
            setTimeout(function() {
                $('#check').tooltip("show");
            }, 250);
        }
    });

希望这可以帮助.

上一篇:javascript – 获取工具提示的宽度并计算位置(Twitter Bootstrap)


下一篇:javascript – 动态生成页面上的jQuery工具提示