Есть элемент label
с классом radioContainer
, при клике на него должен раскрываться список selectmenu
с классом meal
, дело в том, что при клике происходить двойное выполнение колбэка, т.е console.log('double')
выводит в консоль double
два раза, из за этой проблемы не получается закрывать selectmenu
если он уже открыт (для этого и создана переменная selectStatus
);
Вот полный проект с этим багом
P.S: Немного объясню, что тут в коде и для чего, дело в том, что на самом деле есть 2 label
с одинаковым классом radioContainer
с selectmenu
'шками перед ними, но у первого присутствует класс first
, и условие внутри .click
проверяет наличие класса first
у элемента по которому кликнули, если есть - открыть первый список, нету - второй.
let selectStatus = true;
$('label.radioContainer').click(function() {
console.log('double');
selectStatus = !selectStatus;
if($(this).hasClass('first') && selectStatus) {
$('.meal:first').selectmenu('open');
} else if(selectStatus){
$('.meal:not(:first)').selectmenu('open');
}
}); // end click
Пара исправлений нужно сделать и будет работать.
1) Класс first
у вас не в том месте. У вас он в тэге <span>
а надо в родительский узел его добавить, а именно в <label class="radioContainer first">
. Это для того чтобы ваш $(this)
правильно отрабатывал. Иначе он никогда не нашел бы класс first
2) Немного модифицировал ваш event
:
$('label.radioContainer').change(function(event) {
event.stopPropagation();
let menu = $(this).hasClass('first') ? $('.meal:first') : $('.meal:not(:first)');
menu.hasClass('ui-selectmenu-button-open') ? menu.selectmenu('close') : menu.selectmenu('open');
}); // end click
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть стандартное генерируемое меню типа dropdown, допустим на 3 уровня
Ситуация следующаяВалидация номера телефона работает не до конца
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение