Inne rozwiązanie:
$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');
});
Chodzi o to, aby ręcznie uruchomić wyświetlanie PopOver za pomocą zdarzeń mouseenter i mouseleave .
W mouseenter , jeśli nie ma utworzonego PopOver dla twojego elementu ( if ($ (this) .data ('popover') == null) ), utwórz go. Co ciekawe, możesz zdefiniować własną zawartość PopOver, przekazując ją jako argument ( szablon ) do funkcji popover () . Nie zapomnij również ustawić parametru html na true .
Tutaj po prostu tworzę ukryty szablon o nazwie popovertemplate i sklonuję go za pomocą JQuery. Nie zapomnij usunąć atrybutu id po jego sklonowaniu, w przeciwnym razie w DOMU będziesz miał zduplikowane identyfikatory. Zauważ również, że style = "display: none", aby ukryć szablon na stronie.
<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>
Po kroku tworzenia (lub jeśli został już utworzony), po prostu wyświetl popOver z $ (this) .popover ('show');
Następnie klasyczne sprawdzenie Ajax. Jeśli się powiedzie, musisz wyczyścić starą zawartość popover przed umieszczeniem nowych, świeżych danych z serwera . Jak możemy pobrać aktualną zawartość Popover? Z selektorem .popover.in ! Plik .in klasa wskazuje, że aktualnie wyświetlana jest popover, że to podstęp tutaj!
Aby zakończyć, w przypadku mouseleave , po prostu ukryj popover.