2014-11-24 2 views
2

Как вы уничтожаете Popup popup, созданный с помощью опции селектора? напримерУничтожить Bootstrap Popover с опцией выбора

$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

+0

Какую версию Bootstrap вы используете? Даже когда вы используете свой код, я все равно получаю 'данные', что это должно быть (что такое' data.mark' в ваших примерах). – Matt

+0

@Matt It's Bootstrap 3.3.1 –

+0

А, я работал над более старой версией. Похоже на вопиющую ошибку в Bootstrap (введено в этой фиксации: https://github.com/twbs/bootstrap/commit/1b3237629a316af41945e20837cf3a332798b264) – Matt

ответ

Смежные вопросы