Giải pháp khác:
$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');
});
Ý tưởng ở đây là để kích hoạt bằng tay màn hình hiển thị của PopOver với mouseenter & MouseLeave sự kiện.
Trên mouseenter , nếu không có PopOver nào được tạo cho mục của bạn ( if ($ (this) .data ('popover') == null) ), hãy tạo nó. Điều thú vị là bạn có thể xác định nội dung PopOver của riêng mình bằng cách chuyển nó dưới dạng đối số ( mẫu ) cho hàm popover () . Đừng quên đặt tham số html thành true .
Ở đây tôi chỉ tạo một mẫu ẩn có tên là popovertemplate và sao chép nó với JQuery. Đừng quên xóa thuộc tính id sau khi bạn sao chép nó, nếu không, bạn sẽ kết thúc với các id trùng lặp trong DOM. Cũng lưu ý rằng style = "display: none" để ẩn mẫu trong trang.
<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>
Sau bước tạo (hoặc nếu nó đã được tạo), bạn chỉ cần hiển thị popOver với $ (this) .popover ('show');
Sau đó, cuộc gọi Ajax cổ điển. Để thành công, bạn cần phải làm sạch nội dung cửa sổ bật lên cũ trước khi đưa dữ liệu mới mới từ máy chủ . Làm cách nào để chúng tôi có được nội dung popover hiện tại? Với bộ chọn .popover.in ! Lớp .in chỉ ra rằng cửa sổ bật lên hiện đang được hiển thị, đó là mẹo ở đây!
Để kết thúc, trên sự kiện mouseleave , chỉ cần ẩn cửa sổ bật lên.