另一个解决方案:
$target.find('.myPopOver').mouseenter(function()
{
if($(this).data('popover') == null)
{
$(this).popover({
animation: false,
placement: 'right',
trigger: 'manual',
title: 'My Dynamic PopOver',
html : true,
template: $('#popoverTemplate').clone().attr('id','').html()
});
}
$(this).popover('show');
$.ajax({
type: HTTP_GET,
url: "/myURL"
success: function(data)
{
$('.popover.in .popover-inner').empty();
$('.popover.in .popover-inner').html(data);
}
});
});
$target.find('.myPopOver').mouseleave(function()
{
$(this).popover('hide');
});
这里的想法是要手动触发酥料饼的显示器的mouseenter和鼠标离开事件。
上了mouseenter,如果没有您的项目创建酥料饼(如果($(本)。数据(“酥料饼”)== NULL) ),创建它。有趣的是,可以通过将其作为参数(模板)传递给popover()函数来定义自己的PopOver内容。不要忘记也将html参数设置为true。
在这里,我只是创建了一个名为popovertemplate的隐藏模板,并使用JQuery对其进行了克隆。克隆后不要忘记删除id属性,否则最终将在DOM中出现重复的id。还要注意,style =“ display:none”将模板隐藏在页面中。
<div id="popoverTemplateContainer" style="display: none">
<div id="popoverTemplate">
<div class="popover" >
<div class="arrow"></div>
<div class="popover-inner">
//Custom data here
</div>
</div>
</div>
</div>
创建步骤之后(或者如果已经创建),只需使用$(this).popover('show');显示popOver。
然后经典的Ajax调用。成功后,您需要清除旧的Popover内容,然后再从服务器放入新的新数据。我们如何获得当前的弹出窗口内容?使用.popover.in选择器!的。在类指示酥料饼的当前显示,这是这里的伎俩!
最后,在mouseleave事件上,只需隐藏弹出窗口即可。