Bootstrap.popover() 'show' & 'destroy' не работает должным образом

Когда я использую bootstrap popover в режиме "manual", "destroy" и "hide" работают неправильно. Когда я использую hide и destroy, непрозрачность popover меняется на 0, но на его не меняющемся дисплее нет ни одного, что приводит к тому, что контейнер popover покрывает содержимое ниже. В противном случае, если я использую режим "toogle", он работает правильно.

Мой код:

$('[rel="popover"]').popover({
    html: true,
    placement: 'auto',
    container: 'body',
    trigger: 'manual'
});

$('body').on('click' , '[rel="popover"]' , function(e){
    e.stopPropagation();
    $(this).popover('toggle');
});

$('body').on('click' , '.popoverClose' , function(e){
    e.stopPropagation();
    var i = $(this);
    $('.inputInfo').filter('[data-info-id="' +i.data('info-id')+ '"]').popover('hide');
});

// new code
$('body').on('click', function(){
    $('[rel="popover"]').popover('hide');
});

Ответы

Ответ 1

Мое временное решение выглядит так:

Я использую:

$('.popover').remove();

удалить popovers

и

$('body').on('click' , '[rel="popover"]' , function(e){
    e.stopPropagation();

    var i = $(this);
    var thisPopover = $('.popoverClose').filter('[data-info-id="' +i.data('info-id')+ '"]').closest('.popover');        
    if( thisPopover.is(':visible') ){
        $('.popover').remove();
    }
    else{
        $(this).popover('show');
    }
});

для переключения popovers

Ответ 2

Если вы использовали пользовательскую сборку Bootstrap, событие destroy не будет работать, если вы не отметили "переходы" в разделе JS и тестируете в браузере, который поддерживает переходы. Это связано с тем, что Bootstrap смотрит на $.support.transition в jQuery. Если это значение является "правдивым", Bootstrap предполагает, что произойдет какое-то событие переходаEnd и не будет отделять popover до тех пор, пока это событие не будет получено. Но Bootstrap использует пользовательские события, определенные в их библиотеке переходов, поэтому вызов переходаEnd никогда не будет запущен. Если вы не хотите повторно загружать настроенную библиотеку, код перехода находится здесь: код перехода

Ответ 3

Если вы хотите скрыть popover, используйте это вместо:

$('.inputInfo').filter('[data-info-id="' +i.data('info-id')+ '"]').click();

Ответ 4

Работа для начальной загрузки

<span class="pop-target">
      <a href="javascript:void(0);" rel="popover"........> </a>
    </span>



  $(".pop-target a").popover('hide');

Ответ 5

Я исправил его, добавив это в файл css:

.popover.fade{z-index:-1;}

.popover.in{z-index: inherit}