我只希望一次打开一个popover。所以我删除它们然后添加一个新的,但它不起作用。
$(document).on("click", ".priority", function() {
$(".popover").remove();
$(this).popover({ /* [...] */ });
});
这并不表示在创建后是否删除了它。
答案 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/ (现在是正确的链接)