如何通过单击另一个按钮来切换我的所有Bootstrap Popovers?

时间:2015-09-29 08:13:29

标签: jquery twitter-bootstrap

我有一些Bootstrap Popover按钮:

<div class="bs-example tooltip-demo">
    <div class="bs-example-tooltips">
        <button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." data-original-title="" title="">Popover on top</button>

        <button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." data-original-title="" title="">Popover on bottom</button>

        <button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="right" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." data-original-title="" title="">Popover on right</button>
    </div>
</div>
<br><br>
   <button id="toggle" class="btn btn-default" >Toggle all</button>

这里是剧本:

$('[data-toggle="popover"]').popover();


$('#toggle').on('click', function (e) {
    $('[data-toggle="popover"]').each(function () {

        if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
            $(this).popover('toggle');
        }
    });
});

$('body').on('click', function (e) {
    $('[data-toggle="popover"]').each(function () {

        if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
            $(this).popover('hide');
        }
    });
});

所以我想要实现的是:

  • 点击Popover Buttons本身:什么都不做(No Popover)
  • 点击Toggle all切换所有Popovers
  • 点击身体隐藏所有Popovers

在我的代码中它不起作用,也许与隐藏和切换有冲突?

这是小提琴:https://jsfiddle.net/C5GBU/1421/

1 个答案:

答案 0 :(得分:1)

假设你只想让最后一个按钮切换页面上的所有弹出框,那么这就是你需要做的:

$('html').on('mouseup', function(e) {
    if(typeof $(e.target).data('toggle') === "undefined" 
       && $(e.target).attr('id') != 'toggle') {
        $('[data-toggle="popover"]').popover('hide');
    }
});

如果您点击任何不是弹出窗口或切换弹出窗口的按钮,此代码也会隐藏所有弹出窗口:

void svc_exit(void)

您的小提琴已更新:https://jsfiddle.net/C5GBU/1426/