2016-06-14 4 views
0

У меня есть несколько уникальных popovers на странице, вам нужно скрыть их, когда вы нажимаете в любом месте, но текущий активный popover. Попутчики немного сложнее стандартной реализации, поэтому то, что я знаю, чтобы скрыть их, не применяется.Комплекс Bootstrap 2 Popovers Нажмите, чтобы отклонить

http://jsfiddle.net/bb37385m/

$('.popover-markup > .trigger').popover({ 
    html : true, 
    title: function() { 
     return $(this).parent().find('.head').html(); 
    }, 
    content: function() { 
     return $(this).parent().find('.content').html(); 
    }, 
    container: 'body', 
    placement: 'right' 
}); 

ответ

0

Для этого вам необходимо получить свой элемент с щелчком.

var objclass = $(event.target).attr('class'); 

Мы хотим, чтобы всплывающее окно исчезло, если щелкнуть где угодно, кроме самого себя. Поэтому нам нужно проверить, находится ли событие click в любом месте всплывающего окна.

$(event.target).closest('.popover').length == 1 

@bootstrap, чтобы удалить использование поповер .popover('hide');

Результат;

$(document).click(function(event) { 
    var objclass = $(event.target).attr('class'); 
    if($(document).find('.popover').length > 0 && ($(event.target).closest('.popover').length == 1)){ 
     return false; 
    } 
    if ($(document).find('.popover').length > 0 && (objclass != 'trigger') && $(event.target).closest('.popover').length != 1) { 
    $('.trigger').popover('hide'); 
    } 

}); 
+0

Спасибо, это очень помогло! Теперь мне просто нужно открыть только один popover за раз ... –

0

Что вы делаете, чтобы вспомнить, всплывают в настоящее время активен? Было бы неплохо добавить атрибут id к каждому из элементов <div class="popover-markup">.

Вы должны связать метод с элементом $('body') страницы, скорее всего, $('body').click(); - это то, что вам нужно. Создайте новую переменную в этом методе, например $lastClicked, которая запоминает id последнего щелчка (или активного) всплывающего окна.

Закройте всплывающее окно с этим id внутри этого метода.

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