Une autre solution:
$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');
});
L'idée ici est de déclencher manuellement l'affichage de la Liste avec mouseenter et mouseleave événements.
Sur mouseenter, si il n'y a pas de Liste de la création de votre article (si($(this).de données('liste') == null)), créez-la. Ce qui est intéressant, c'est que vous pouvez définir votre propre Liste de contenu en le passant comme argument (modèle) de la liste() fonction. Ne pas oublier de mettre le html paramètre à vrai également.
Ici, je viens de créer un caché modèle appelé popovertemplate et le clone avec JQuery. N'oubliez pas de supprimer l'attribut id une fois que vous le clone sinon vous vous retrouverez avec dupliqué id dans les DOM. Notez également que style="display: none" pour masquer le modèle dans la page.
<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>
Après l'étape de création (ou si elle a déjà été créé), il vous suffit d'afficher la liste avec $(this).liste('show');
Alors classique de l'appel Ajax. Sur le succès, vous devez nettoyer la vieille liste du contenu avant de mettre de nouvelles données à partir du serveur. Comment peut-on obtenir la liste actuelle de contenu ? Avec la .liste.dans le sélecteur de! L' .en classe indique que la liste est affichée, c'est le truc ici!
Pour finir, sur mouseleave événement, il suffit de masquer la liste.