अद्यतन: थोड़ा और अधिक मजबूत समाधान: http://jsfiddle.net/mattdlockyer/C5GBU/72/
केवल पाठ वाले बटनों के लिए:
$('body').on('click', function (e) {
//did not click a popover toggle or popover
if ($(e.target).data('toggle') !== 'popover'
&& $(e.target).parents('.popover.in').length === 0) {
$('[data-toggle="popover"]').popover('hide');
}
});
आइकन उपयोग वाले बटनों के लिए (इस कोड में बूटस्ट्रैप 3.3.6 में एक बग है, इस उत्तर में नीचे दिए गए फ़िक्स को देखें)
$('body').on('click', function (e) {
//did not click a popover toggle, or icon in popover toggle, or popover
if ($(e.target).data('toggle') !== 'popover'
&& $(e.target).parents('[data-toggle="popover"]').length === 0
&& $(e.target).parents('.popover.in').length === 0) {
$('[data-toggle="popover"]').popover('hide');
}
});
जे एस जेनरेट करने वाले R आर उपयोग '[data-original-title]'
के स्थान पर'[data-toggle="popover"]'
कैविएट: ऊपर दिए गए समाधान से कई पॉपओवर को एक बार में खोला जा सकता है।
कृपया एक बार में एक आबादी:
अपडेट: बूटस्ट्रैप 3.0.x, कोड या फिडेल देखें http://jsfiddle.net/mattdlockyer/C5GB4/5/
$('body').on('click', function (e) {
$('[data-toggle="popover"]').each(function () {
//the 'is' for buttons that trigger popups
//the 'has' for icons within a button that triggers a popup
if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
$(this).popover('hide');
}
});
});
यह पहले से खुले हुए पॉपओवर को बंद करता है और उन पर क्लिक नहीं करता है या उनके लिंक पर क्लिक नहीं किया गया है।
अपडेट: बूटस्ट्रैप 3.3.6, फिडेल देखें
बंद करने के बाद समस्या को हल करता है, फिर से खोलने के लिए 2 क्लिक लेता है
$(document).on('click', function (e) {
$('[data-toggle="popover"],[data-original-title]').each(function () {
//the 'is' for buttons that trigger popups
//the 'has' for icons within a button that triggers a popup
if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
(($(this).popover('hide').data('bs.popover')||{}).inState||{}).click = false // fix for BS 3.3.6
}
});
});
अद्यतन: पिछले सुधार की सशर्त का उपयोग करके, यह समाधान हासिल किया गया था। डबल क्लिक और भूत आबादी की समस्या को ठीक करें:
$(document).on("shown.bs.popover",'[data-toggle="popover"]', function(){
$(this).attr('someattr','1');
});
$(document).on("hidden.bs.popover",'[data-toggle="popover"]', function(){
$(this).attr('someattr','0');
});
$(document).on('click', function (e) {
$('[data-toggle="popover"],[data-original-title]').each(function () {
//the 'is' for buttons that trigger popups
//the 'has' for icons within a button that triggers a popup
if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
if($(this).attr('someattr')=="1"){
$(this).popover("toggle");
}
}
});
});