我使用的代码如下:
$(".reply").popover({
content: "Loading...",
placement: "bottom"
});
$(".reply").popover("toggle");
它正确地创建了弹出窗口及其内容。我想在不关闭弹出窗口的情况下将新数据加载到弹出窗口中。
我尝试过以下几种方法:
var thisVal = $(this);
$.ajax({
type: "POST",
async: false,
url: "Getdes",
data: { id: ID }
}).success(function(data) {
thisVal.attr("data-content", data);
});
在此调用之后,元素中的数据会被更改,但不会出现在弹出窗口中。
我该怎么做呢?
发布于 2014-02-21 01:53:29
在bootstrap 3中:
if($el.data('bs.popover')) {
$el.data('bs.popover').options.content = "New text";
}
$el.popover('show');
发布于 2015-01-15 10:25:47
在我看来,这些解决方案中的大多数实际上都是老生常谈。Bootstrap标准文档有一个可以使用的方法destroy
。因此,在通过某些事件更改内容时,您可以简单地销毁内容,然后重新创建内容。
.popover('destroy')
这将正确地动态加载、刷新和重新呈现弹出窗口的内容。
发布于 2013-06-06 18:49:34
我使用@David和@Sujay sreedhar的答案解决了这个问题,但是如果在加载新内容的过程中弹出框可见,则需要重新定位弹出框:
var popover = thisVal.attr('data-content',data).data('popover');
popover.setContent();
popover.$tip.addClass(popover.options.placement);
// if popover is visible before content has loaded
if ($(".reply").next('div.popover:visible').length){
// reposition
popover.show();
}
如果没有重新定位,并且新内容具有不同的高度,则弹出窗口将向下扩展,箭头将偏离目标!
此外,当按钮被点击后,它将重新打开弹出窗口,而不是关闭它。上面的代码也解决了这个问题。
(我的编辑被拒绝了,所以我想我应该把它贴在这里。)
https://stackoverflow.com/questions/13564782
复制相似问题