Как сделать клик по элементу кроме одного блока в JS?
Имеется код html:
<div id="touchSideSwipe" class="touch-side-swipe d-lg-none">
...
<button class="user_region1">Не выбрано <span class="arrow1">↓</span></button>
</div>
Как добавить событие на touchSideSwipe, но чтобы она не отрабатывала на button user_region1? Я пытался, у меня не получилось:
const box = $(".touch-side-swipe");
box.on("click", function (e){
if (!$('.user_region1'))
{
console.log('hi');
}
console.log('123');
})
Ответы (2 шт):
Автор решения: De.Minov
→ Ссылка
Проще всего проверить на наличие определённого класса, если его нет, то ничего делать не будем.
// Кроме класса .user_region1
if(!$(this).hasClass('user_region1')) {
// ...
}
Демо:
$('#touchSideSwipe').on('click', 'button', function() {
if(!$(this).hasClass('user_region1')) {
console.log('click');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="touchSideSwipe" class="touch-side-swipe d-lg-none">
<button>A</button>
<button>B</button>
<button>C</button>
<button class="user_region1">Не выбрано <span class="arrow1">↓</span></button>
</div>
Автор решения: Михаил В
→ Ссылка
В качестве альтернативы )
Если нужно задействовать именно параметр event на onClick элемента, через него можно проверить наличие у самого элемента необходимого класса, и завязать на него условие:
const box = $(".touch-side-swipe");
box.on("click", function (e){
if (e.target.classList.contains('user_region1'))
{
console.log('hi');
return false;
}
console.log('123');
})