Ok. Вот обновленная версия моего ответа и проверенный и рабочий код.Секрет всплывающего окна заключается в том, чтобы запустить функцию соответствия в нужное время с помощью срабатывания поповера.Итак, код JS:
function firePopover() {
$('.hidden').css('display', 'block');
var delay = 100;
setTimeout(function () {
$('button:not(.main)').unbind('click');
$('button:not(.main)').click(function () {
var x = $(this).attr('class');
alert(x);
$('.hidden').css('display', 'none');
});
}, delay);
}
Здесь я использую html-селектор
:not(.main)
, чтобы предотвратить события привязки и отмены привязки к главной кнопке.Кроме того, мы должны обратить внимание на тот факт, что каждое повышение поповера связывает новый обработчик событий с каждой кнопкой.Это означает, что после n всплывающих окон каждая кнопка сработает n раз.Чтобы предотвратить этот эффект, можно связывать события только в первом повышении или, как я делал, отменять привязку события от кнопки при каждом повышении поповера.Что касается HTML-кода, то вот он:
<button class="main" onclick="firePopover()">Fire Popover</button>
<div id="moreoptions" class="hidden" hidden>
<div class="popover-body">
<div class="list-group">
<button class="class-0 list-group-item"><span class="gap"></span>Edit</button>
<button class="class-1 list-group-item"><span class="gap"></span>Logic Builder</button>
<button class="class-2 list-group-item"><span class="gap"></span>Uneploy</button>
</div>
</div>
</div>
Я только добавил кнопку «.main», чтобы принять симуляцию, и каждая кнопка получила дополнительный соответствующий класс «class-0», «class-1»«класс-2» для успешной демонстрации.Теперь, когда вы нажимаете на основную кнопку, появляются другие 3 кнопки.И наоборот, нажатие на любую из этих 3 кнопок приводит к срабатыванию оповещения и исчезновению всех из них.Я надеюсь, что это поможет вам.
function firePopover() {
$('.hidden').css('display', 'block');
var delay = 100;
setTimeout(function () {
$('button:not(.main)').unbind('click');
$('button:not(.main)').click(function () {
var x = $(this).attr('class');
alert(x);
$('.hidden').css('display', 'none');
});
}, delay);
}
.hidden {
display: none;
}
button {
float: left;
}
.class-0 {
clear: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button class="main" onclick="firePopover()">Fire Popover</button>
<div id="moreoptions" class="hidden" hidden>
<div class="popover-body">
<div class="list-group">
<button class="class-0 list-group-item"><span class="gap"></span>Edit</button>
<button class="class-1 list-group-item"><span class="gap"></span>Logic Builder</button>
<button class="class-2 list-group-item"><span class="gap"></span>Uneploy</button>
</div>
</div>
</div>