Dynamically add a class to Bootstrap's 'popover' container
You can do this without hacking Bootstrap and without changing the template either, by grabbing the popover object from the caller's data
and accessing its $tip
property.
$('a[rel=popover]')
.popover({ placement: 'bottom', trigger: 'hover' })
.data('bs.popover')
.tip()
.addClass('my-super-popover');
There is another way to do this in version 2.3 that is quite simple actually. You override the default template to include the class to the container.
var pop = $('a', this.el).popover({
trigger: 'click'
, template: '<div class="popover awesome-popover-class"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
});
Based on what @bchhun wrote and a lot of head scratching, I felt I should answer my own question, as I got it working. I also noticed this had been favourited and liked, so I hope I'm helping someone else who is a newbie at jQuery like myself.
In the current Bootstrap build [v2.1.0], the scripts are all consolidated. So if you have included all of the scripts in your build (and not edited any new lines/taken some out), then head to line 1108 of the un-minified .js
file. You'll find the following bit of code:
$tip
.css(tp)
.addClass(placement)
.addClass('in')
You're going to be adding a new line to this, which is:
.addClass(this.$element.attr("data-class"))
So now whenever you add data-class
to the popover call, it will add the attribute to the <div class="popover">
div.
Now that I see it, it's so obvious :)