删除所有弹出框然后添加弹出窗口,不显示

时间:2014-06-25 09:58:22

标签: jquery twitter-bootstrap popover

我只希望一次打开一个popover。所以我删除它们然后添加一个新的,但它不起作用。

$(document).on("click", ".priority", function() {
    $(".popover").remove();
    $(this).popover({ /* [...] */ });
});

这并不表示在创建后是否删除了它。

JSFiddle

1 个答案:

答案 0 :(得分:1)

您需要使用方法hide,例如popover('hide')

$(document).on("click", ".priority", function() {
    //this will hide all popovers except the popover associated to the clicked .priorioty
    $(".popover").not(this).popover('hide');
    $(this).popover({ /* [...] */ });
});

请参阅文档http://getbootstrap.com/javascript/#popovers

这是一个小小的演示,展示了我将如何做到(与你的不同,顺便说一下,关于“尖头”的最后一个(删除的)问题)。无法理解你想要实现的目标(尤其是考虑最后一个问题) - 为什么要在点击时实例化popovers,那么用户必须点击两次?顺便说一下,你的小提琴永远不会出现一个弹出窗口!

$('.priority').each(function() {
    $(this).popover({
        title: "Priority value",
        content: '<input id="priorityBox" type="range" min="0" max="100" />',
        container: "#matchRuleForm",
        html: true
    }).on('show.bs.popover', function() {
       $('.priority').not(this).popover('hide');
    });  
}) 

弹出窗口附加到元素,如.priority - 因此您应该定位这些元素。 .popover只是暂时注入到DOM中,并且不能被弹出方法操纵,例如.('show').('hide')

演示 - &gt; http://jsfiddle.net/4mWE9/ (现在是正确的链接)