एक और समाधान:
$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');
});
विचार यहाँ से मैन्युअल पॉपओवर के प्रदर्शन को गति प्रदान करने के लिए है mouseenter और mouseleave घटनाओं।
पर mouseenter , अगर वहाँ कोई पॉपओवर अपने मद के लिए बनाई गई (है अगर ($ (this) .data ( 'पॉपओवर') == नल) ), यह पैदा करते हैं। मजे की बात यह है कि आप अपने स्वयं के पॉपओवर कंटेंट को पॉपओवर () फ़ंक्शन में तर्क ( टेम्पलेट ) के रूप में पास करके परिभाषित कर सकते हैं । Html पैरामीटर को सही पर सेट करने के लिए मत भूलना ।
यहाँ मैं सिर्फ एक छिपा हुआ टेम्पलेट बनाता हूँ जिसे popovertemplate कहा जाता है और इसे JQuery के साथ क्लोन करता है। एक बार इसे क्लोन करने के बाद आईडी विशेषता को हटाना न भूलें अन्यथा आप DOM में डुप्लिकेट आईडी के साथ समाप्त हो जाएंगे। उस शैली को भी देखें = पृष्ठ में टेम्पलेट को छिपाने के लिए "प्रदर्शन: कोई नहीं" ।
<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.in चयनकर्ता! .इन वर्ग इंगित करता है कि पॉपओवर वर्तमान में प्रदर्शित किया जाता है, यह है कि चाल यहाँ!
समाप्त करने के लिए, मूसलीव इवेंट पर, बस पॉपओवर छिपाएं।