Solusi lain:
$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');
});
Idenya di sini adalah untuk memicu tampilan PopOver secara manual dengan mouseenter & mouseleave peristiwa .
Pada mouseenter , jika tidak ada PopOver yang dibuat untuk item Anda ( if ($ (this) .data ('popover') == null) ), buatlah. Yang menarik adalah Anda bisa mendefinisikan konten PopOver Anda sendiri dengan meneruskannya sebagai argumen ( template ) ke fungsi popover () . Jangan lupa untuk mengatur parameter html menjadi true juga.
Di sini saya baru saja membuat template tersembunyi yang disebut popovertemplate dan mengkloningnya dengan JQuery. Jangan lupa untuk menghapus atribut id setelah Anda menggandakannya , jika tidak, Anda akan mendapatkan id duplikat di DOM. Perhatikan juga bahwa style = "display: none" untuk menyembunyikan template di halaman.
<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>
Setelah langkah pembuatan (atau jika sudah dibuat), Anda tinggal menampilkan popOver dengan $ (this) .popover ('show');
Kemudian panggilan Ajax klasik. Jika berhasil, Anda perlu membersihkan konten popover lama sebelum memasukkan data baru dari server . Bagaimana kami bisa mendapatkan konten popover saat ini? Dengan pemilih .popover.in ! The .in menunjukkan bahwa popover sedang ditampilkan, itulah triknya di sini!
Untuk menyelesaikan, pada acara mouseleave , cukup sembunyikan popover.