Un'altra soluzione:
$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');
});
L'idea qui è di attivare manualmente la visualizzazione di PopOver con eventi mouseenter e mouseleave .
Su mouseenter , se non è stato creato alcun PopOver per il tuo articolo ( if ($ (this) .data ('popover') == null) ), crealo . Ciò che è interessante è che puoi definire il tuo contenuto PopOver passandolo come argomento ( modello ) alla funzione popover () . Non dimenticare di impostare anche il parametro html su true .
Qui creo solo un modello nascosto chiamato popovertemplate e lo clono con JQuery. Non dimenticare di eliminare l'attributo id una volta clonato, altrimenti ti ritroverai con ID duplicati nel DOM. Notare anche che style = "display: none" per nascondere il modello nella pagina.
<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>
Dopo il passaggio di creazione (o se è già stato creato), visualizzi il popOver con $ (this) .popover ('show');
Poi la classica chiamata Ajax. In caso di successo è necessario pulire il vecchio contenuto popover prima di inserire nuovi dati freschi dal server . Come possiamo ottenere il contenuto attuale del popover? Con il selettore .popover.in ! La classe .in indica che il popover è attualmente visualizzato, questo è il trucco qui!
Per finire, in caso di uscita del mouse , basta nascondere il popover.