別の解決策:
$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)
{
//Clean the popover previous content
$('.popover.in .popover-inner').empty();
//Fill in content with new AJAX data
$('.popover.in .popover-inner').html(data);
}
});
});
$target.find('.myPopOver').mouseleave(function()
{
$(this).popover('hide');
});
ここでの考え方は、 mouseenterイベントとmouseleaveイベントを使用してPopOverの表示を手動でトリガーすることです。
mouseenterで、アイテムに対してPopOverが作成されていない場合(if($(this).data('popover')== 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.inセレクターで!.inクラスは、ポップオーバーが現在表示されていることを示します。これがトリックです。
終了するには、mouseleaveイベントで、ポップオーバーを非表示にします。