2014-04-14 13 views
8

Ich bin bereit, Bootstrap Popover einzurichten, um die E-Mail-Liste anzuzeigen, die an den Benutzer gesendet wurden. Der Inhalt wird daher dynamisch über einen ajax Aufruf generiert. Hier ist mein Stück Code:Twitter Bootstrap Popover mit dynamisch generiertem Inhalt über Ajax

$('#liste').on('mouseover', 'tr[data-toggle=popover]', function(e) { 
     var $tr = $(this); 
     id = $(this).data('id'); 
     $.ajax({ 
      url: '<?php echo $this->url(array(), 'loadRelance');?>', 
      data: {id: id}, 
      dataType: 'html', 
      success: function(html) { 
       $tr.popover({ 
        title: 'Relance', 
        content: html, 
        placement: 'top', 
        html: true, 
        trigger: 'hover' 
       }).popover('show'); 
      } 
     }); 
    }); 

Wie Sie sehen können, wird es einen Ajax-Aufruf auslösen auf jeden mouseover auf dem <tr> ‚s der <table>. Wie es perfekt funktioniert, wenn die Seite zum ersten Mal geladen wird, wenn ich die Anzahl der gesendeten E-Mails ändere, zeigt es die aktualisierte Liste nicht an, wenn ich es erneut überlege (es funktioniert, wenn ich die Seite natürlich neu lade). Ich kann in der Vorschau von XHR-Anfragen in der Chrome Developer Toolbar die aktualisierte Liste sehen, aber sie wird nicht in den Inhalt des Popover geladen. Es behält die alte Liste.

Jede Hilfe würde sehr geschätzt werden. Danke!

+1

Sie sind für jeden Mouseover eine neue popover zu schaffen. Sie sollten $ tr.popover ('destroy') verwenden; $ tr.popover ({Optionen}). popover ('show'); –

+0

Vielen Dank! Das Hinzufügen von '$ tr.popover ('destroy');' kurz vor dem 'Ajax'-Aufruf hat den Trick gemacht! – D4V1D

Antwort

10

Sie sollten die bestehenden popover zerstören mit:

$tr.popover('destroy'); 

dann die neuen popover mit Ihrem Code erstellen:

$tr.popover({options}).popover('show'); 
Verwandte Themen