セレクタ オプションで作成された 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']
いるはずですが、これがどのように発生するのかはすぐにはわかりません。
1 つのオプションは、文字列を作成してからプロパティを文字列s = 'destroy'
に追加するselector
ことですが、それが意図した設計ではないことは明らかです。
または、 を呼び出すこともできます$e.data('bs.popover').mark.destroy()
が、それが意図した設計であるかどうかはわかりません。また、どこにも文書化されていません。