changing the title of a popover with bootstrap and jquery

jquery, popover, twitter-bootstrap

Solution

Consider that cat skinned!

Here's the deal. It appears that in the bootstrap.js file there is no method for getTitle() even though it's calling. So I added it. Enjoy.

/* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
 ========================================== */

Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
  constructor: Popover, setContent: function () {
  //debugger;

  var $tip = this.tip()
    , title = this.getTitle() // didn't exist
    , content = this.getContent()

  $tip.find('.popover-title')[this.isHTML(title) ? 'html' : 'text'](title)
  $tip.find('.popover-content > *')[this.isHTML(content) ? 'html' : 'text'](content)

  $tip.removeClass('fade top bottom left right in')
}

, hasContent: function () {
  return this.getTitle() || this.getContent()
}

 , getContent: function () {
  var content
    , $e = this.$element
    , o = this.options

  content = $e.attr('data-content')
    || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)

  return content
}

 , getTitle: function () { // does now
  var title
    , $t = this.$element
    , n = this.options

  title = $t.attr('data-title')
    || (typeof n.title == 'function' ? n.title.call($t[0]) : n.title)

  return title
}

, tip: function () {
  if (!this.$tip) {
      this.$tip = $(this.options.template)
  }
  return this.$tip
}

})

for some reason I can't grab the actual "title" attribute so you'll have to use "data-title" if you want to change it.

Problem

here's the html for the link, i.e.: ``` <a href="javascript:void(0);" style="font-size: 3em; color: #222" class="popover-test" id="directNavPrev" data-title="Previous Result Row" data-content="Previous Result Row"> &laquo;</a> ``` yes, i'm calling .popover() to initialize and the popover works just fine. i can get the content to update with no problem. just not the title. i've tried "prev.data('title','new title')" and even tried to re-init "prev.popover({title:'new title'});" with no dice... thanks. ``` function SetDirectNavigationPlaceholder() { //debugger; var item = $("#movementType :selected").val(); var direct = $('#directNavigation'); var prev = $('#directNavPrev'); var next = $('#directNavNext'); switch (item) { case "result": $('#bookTypeSection').addClass('hide'); direct.val('Result Row from 1 - 150'); prev.attr('data-title', "Previous Result Row"); next.attr('data-title', "Next Result Row"); prev.attr('data-content', "Check it! this will contain the information for the previous result<table><tr><td>blah</td><td>blah</td></tr><tr><td>blah</td><td>blah</td></tr><tr><td>blah</td><td>blah</td></tr><tr><td>blah</td><td>blah</td></tr></table>"); next.attr('data-content', "Check it! this will contain the information for the next result<table><tr><td>blah</td><td>blah</td></tr></table>"); break; case "instrument": $('#bookTypeSection').addClass('hide'); direct.val('Instrument #'); prev.attr('data-title', "Previous Instrument #"); next.attr('data-title', "Next Instrument #"); prev.attr('data-content', "Check it! this will contain the information for the previous <b>instrument</b><table><tr><td>blah</td><td>blah</td></tr></table>"); next.attr('data-content', "Check it! this will contain the information for the next <b>instrument</b><table><tr><td>blah</td><td>blah</td></tr></table>"); break; case "bookpage": $('#bookTypeSection').removeClass('hide'); direct.val('Book/Page'); prev.attr('data-title', "Previous Book/Page"); next.attr('data-title', "Next Book/Page"); prev.attr('data-content', "Check it! this will contain the information for the previous <b>book/page</b><table><tr><td>blah</td><td>blah</td></tr></table>"); next.attr('data-content', "Check it! this will contain the information for the next <b>book/page</b><table><tr><td>blah</td><td>blah</td></tr></table>"); break; } direct.css('color', '#aaa').not('#directNavigationHeader'); } ```

Original source

Related problems