วิธีแก้ปัญหาอื่น:
$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');
});
แนวคิดต่อไปนี้คือการเรียกใช้การแสดง PopOver ด้วยตนเองด้วยmouseenter & mouseleave events
บนmouseenterหากไม่มีการสร้าง PopOver สำหรับรายการของคุณ ( ถ้า ($ (this) .data ('popover') == null) ) ให้สร้างขึ้น สิ่งที่น่าสนใจคือคุณสามารถกำหนดเนื้อหา PopOver ของคุณเองได้โดยส่งเป็นอาร์กิวเมนต์ ( template ) ไปยังฟังก์ชันpopover () อย่าลืมตั้งค่าพารามิเตอร์html เป็น trueด้วย
ที่นี่ฉันเพิ่งสร้างเทมเพลตที่ซ่อนอยู่ชื่อpopovertemplateและโคลนด้วย JQuery อย่าลืมลบแอตทริบิวต์ id เมื่อคุณโคลนไม่เช่นนั้นคุณจะได้รับรหัสซ้ำใน DOM โปรดสังเกตด้วยว่าstyle = "display: none"เพื่อซ่อนเทมเพลตในเพจ
<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>
หลังจากขั้นตอนการสร้าง (หรือถ้าสร้างแล้ว) คุณเพียงแค่แสดง popOver ด้วย$ (this) .popover ('show');
จากนั้นก็โทรหา Ajax แบบคลาสสิก เกี่ยวกับความสำเร็จที่คุณจำเป็นต้องทำความสะอาดเนื้อหา popover เก่าก่อนที่จะวางข้อมูลที่สดใหม่จากเซิร์ฟเวอร์ เราจะรับเนื้อหา popover ปัจจุบันได้อย่างไร ด้วยตัวเลือก. popover.in ! .inระดับบ่งชี้ว่า popover จะปรากฏขึ้นในขณะนี้ว่าเป็นเคล็ดลับที่นี่แล้ว!
ในการเสร็จสิ้นในเหตุการณ์mouseleaveเพียงแค่ซ่อน popover