I found this result (How can I keep bootstrap popover alive while the popover is being hovered?) that works for one of my popovers, but I have multiple popover events targeted by ID and am wondering how I can apply this either to all of them or to each one. Here is an example of some of the code snippets that I am using.
here is the html:
<label class="checkbox">
<input type="checkbox" value="" />Body of Delusion<a data-bodyofdelusion="{% static 'pathfinder/html/sleepingGoddess/bodyOfDelusion.html' %}" data-toggle="popover" id="bodyOfDelusion">▼</a>
</label>
<label class="checkbox">
<input type="checkbox" value="" />Call the Soul's Blade<a data-callthesoulsblade="{% static 'pathfinder/html/sleepingGoddess/callTheSoulsBlade.html' %}" data-toggle="popover" id="callTheSoulsBlade">▼</a>
</label>
Here is the javascript:
function loadContent(callTheSoulsBlade) {
return $('<div>').load(callTheSoulsBlade, function (html) {
parser = new DOMParser();
doc = parser.parseFromString(html, "text/html");
return doc.querySelector('h4').outerHTML + doc.querySelector('body').outerHTML;
})
};
$(document).ready(function () {
$("#callTheSoulsBlade").popover({
trigger: "hover focus",
container: 'body',
html: true,
content: function () {
return loadContent($(this).data('callthesoulsblade'))
}
});
});
function loadContent(bodyOfDelusion) {
return $('<div>').load(bodyOfDelusion, function (html) {
parser = new DOMParser();
doc = parser.parseFromString(html, "text/html");
return doc.querySelector('h4').outerHTML + doc.querySelector('body').outerHTML;
})
};
$(document).ready(function () {
$("#bodyOfDelusion").popover({
trigger: 'manual',
container: 'body',
html: true,
animation: false,
content: function () {
return loadContent($(this).data('bodyofdelusion'))
}
}).on("mouseenter", function () { // This is the section from the link I provided.
var _this = this;
$(this).popover("show");
$(".popover").on("mouseleave", function () {
$(_this).popover('hide');
});
}).on("mouseleave", function () {
var _this = this;
setTimeout(function () {
if (!$(".popover:hover").length) {
$(_this).popover("hide");
}
}, 300);
});
});