2
如何銷燬使用選擇器選項創建的Bootstrap彈出窗口?例如使用選擇器選項銷燬Bootstrap彈出窗口
$e.popover({
selector: 'mark',
trigger: 'hover',
container: "body",
});
如果您隨後致電$e.popover('destroy')
,則會顯示錯誤消息。
我注意到Plugin
功能通過popover('destroy')
稱爲如下:
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
您使用的是什麼版本的Bootstrap?即使在使用你的代碼時,我仍然會得到'數據'(應該是你的例子中的'data.mark')。 – Matt 2014-11-24 16:32:00
@Matt It's Bootstrap 3.3.1 – 2014-11-24 16:38:07
啊,我正在做一箇舊版本。看起來像Bootstrap中的明顯錯誤(在此提交中介紹; https://github.com/twbs/bootstrap/commit/1b3237629a316af41945e20837cf3a332798b264) – Matt 2014-11-24 16:42:29