如何销毁使用选择器选项创建的 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/