【问题标题】:prevent bootstrap tooltip from hiding on click over it防止引导工具提示在单击时隐藏
【发布时间】:2021-11-11 04:08:26
【问题描述】:

我想防止工具提示在我单击它时隐藏。除了我点击正文的任何​​地方它都应该隐藏它。

工具提示即使在制表符上也应该可以工作。

js 小提琴:

http://jsfiddle.net/C5GBU/41/

html:

<div class="bs-example tooltip-demo">
    <div class="bs-example-tooltips">
        <input type="text" class="form-control" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." data-original-title="" title=""/>    
        <input type="text" class="form-control" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." data-original-title="" title=""/>     
        <input type="text" class="form-control" data-container="body" data-toggle="popover" data-placement="right" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." data-original-title="" title=""/>
    </div>
</div>

jquery:

$('[data-toggle="popover"]').popover({trigger:"focus"});

$('body').on('click', function (e) {
    $('[data-toggle="popover"]').each(function () {
        //the 'is' for buttons that trigger popups
        //the 'has' for icons within a button that triggers a popup
        if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
            $(this).popover('hide');
        }
    });                
});

【问题讨论】:

    标签: jquery tooltip twitter-bootstrap-3


    【解决方案1】:

    我可以建议触发弹出框manually

    var close = true;
    $('[data-toggle="popover"]').popover({trigger:"manual"});
    
    $(document).on('mousedown', function (e) {
        if($(e.target).hasClass('popover-content'))
            close = false;
        else
            close = true; 
    });
    
    $('[data-toggle="popover"]').on("blur",function(){
        if(close)
            $(this).popover('hide');
        else 
           $(this).focus();
    });
    
    $('[data-toggle="popover"]').on("focus",function(){
       if(close)
           $(this).popover('show'); 
    });
    

    示例:Fiddle

    标签问题的更新修复:

    .blur 函数更改为以下内容:

    $('[data-toggle="popover"]').on("blur",function(){
        if(close)
            $(this).popover('hide');
        else {
           $(this).focus();
           close = true;
        }
    });
    

    Fiddle

    【讨论】:

    • 一旦显示出来,即使点击正文,它也不会被隐藏..这发生在最后一个工具提示上
    • @susheel 你用的是什么浏览器?在 Chrome 中非常适合我
    • 检查最后一个工具提示点击它然后点击外部我的意思是在身体上..我正在使用chrome虽然
    • 哦,最后一个工具提示。那一定是因为最后一个工具提示的宽度一直在屏幕上,我将查看它。如果您在屏幕上单击不同的高度,它就会消失。
    • 为什么我看到闪烁的效果好像它正在重新加载
    【解决方案2】:

    游戏有点晚了,但在尝试其他答案后我能够解决这个问题:

    HTML:

    <a data-toggle="popover" data-trigger="manual" tabindex="0" data-html="true" data-title="my title <button class='close'>×</button>" data-content="my content">
        <i class="fa fa-info-circle"></i>
    </a>
    

    CSS:

    /* not necessary, but makes the x look better, imo */
    .popover-title .close {
        margin-top: -3px;
        margin-right: -6px;
    }
    

    jQuery:

    $("[data-toggle='popover']").popover();
    
    // Custom Bootstrap Popover triggers (requires triggers set to manual)
    $("body").on("click", function (e) {
    
        // Trigger toggles associated popover
        if ($(e.target).hasClass("fa-info-circle")) {
            $(e.target).parent().popover("toggle");
        }
    
        // Popover x closes associated popover
        else if ($(e.target).hasClass("close")) {
            $(e.target).closest(".popover").siblings("[data-toggle='popover']").popover("hide");
        }
    
        // Everything else closes all popovers
        else if (!$(e.target).closest(".popover").length) {
            $(".popover").siblings("[data-toggle='popover']").popover("hide");
        }
    });
    
    • 单击信息图标可切换关联的弹出框。
    • 单击弹出框 x 将关闭关联的弹出框。
    • 点击其他任何地方都会关闭所有弹出框。
    • 可以同时打开多个弹出框。
    • HTML 也可以在弹出框正文中使用。
    • 可以添加/删除弹出框,并且处理程序仍然可以工作。

    【讨论】:

    • @thefreeline,这是您在接受答案时遇到的相同问题的结果,我也尝试过,其中 html 内容没有突出显示,等等。
    猜你喜欢
    • 2016-05-06
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 2021-02-06
    • 2014-07-09
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多