Otra solución:
$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');
});
La idea aquí es activar manualmente la visualización de PopOver con mouseenter & mouseleave eventos .
En mouseenter , si no hay un PopOver creado para su artículo ( si ($ (this) .data ('popover') == null) ), créelo. Lo interesante es que puede definir su propio contenido PopOver pasándolo como argumento ( plantilla ) a la función popover () . No olvide establecer el parámetro html en verdadero también.
Aquí solo creo una plantilla oculta llamada popovertemplate y la clono con JQuery. No olvide eliminar el atributo id una vez que lo clone, de lo contrario, terminará con identificadores duplicados en el DOM. También observe que style = "display: none" para ocultar la plantilla en la página.
<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>
Después del paso de creación (o si ya se ha creado), simplemente muestra el popOver con $ (this) .popover ('show');
Luego, la llamada clásica del Ajax. Si tiene éxito, debe limpiar el contenido anterior de la ventana emergente antes de colocar nuevos datos frescos del servidor . ¿Cómo podemos obtener el contenido actual de popover? ¡Con el selector .popover.in ! La clase .in indica que el popover se muestra actualmente, ¡ese es el truco aquí!
Para terminar, en el evento mouseleave , simplemente oculte el popover.