javascript - 使用选择选项销毁 Bootstrap Popover

标签 javascript twitter-bootstrap bootstrap-popover

如何销毁使用选择器选项创建的 Bootstrap 弹出窗口?例如

$e.popover({
  selector: 'mark',
  trigger: 'hover',
  container: "body",
});

如果您随后调用$e.popover('destroy'),则会收到错误。

我注意到 popover('destroy') 调用的 Plugin 函数如下:

 function Plugin(option) {
    return this.each(function () {
      var $this    = $(this)
      var data     = $this.data('bs.popover')
      var options  = typeof option == 'object' && option
      var selector = options && options.selector

      if (!data && option == 'destroy') return
      if (selector) {
        if (!data) $this.data('bs.popover', (data = {}))
        if (!data[selector]) data[selector] = new Popover(this, options)
      } else {
        if (!data) $this.data('bs.popover',(data = new Popover(this, options)))
      }
      if (typeof option == 'string') data[option]() /// <<-- THIS ALWAYS FAILS
    })
  }

如果您调用 $e.popover('destroy') 上面的行(明确标记)总是失败,因为它正在调用 data['destroy'],但是数据将是一个类似 {mark: Popover} 的对象。

它显然应该调用data['mark']['destroy'],但我并不清楚这是如何发生的。

一种选择是创建一个字符串 s = 'destroy' 然后将 selector 属性添加到该字符串,但很明显这不是预期的设计.

或者,人们可以调用$e.data('bs.popover').mark.destroy(),但我再次不确定这是否是预期的设计,而且我在任何地方都没有记录它可以找到。

这是一个sample jsFiddle

最佳答案

Matt评论过,这是a Bootstrap bug in 3.3.1 .

关于javascript - 使用选择选项销毁 Bootstrap Popover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27108979/

相关文章:

javascript - 使用 jQuery.extend 并将自定义对象作为属性时出现意外行为

javascript - 如何设置 div#a 的宽度等于 div#b

css - Bootstrap + 简单表单复选框网格

html - 转换为移动 View 时在 html 中调整图像大小有问题

jquery - 将 Bootstrap 弹出框分配给父元素

javascript - Bootstrap Popover 隐藏在浏览器边缘。如何解决呢?

javascript - AngularJS ng-repeat - 无法获取模块或 Controller

html - 2行5列全宽

jquery - Bootstrap - 以编程方式附加并显示弹出框到元素

javascript - 检测 Canvas 边缘并允许远离它的移动