我不太明白为什么我的脚本无效:
$(() => {
let dropdown = $('.passengers-main-dropdown'),
drop = dropdown.siblings('.dropdown-box');
dropdown.on('click', function(){
$(this).addClass('active');
drop.addClass('active');
});
$(document).on('click', function(e){
if(dropdown.is(e.target) || !drop.is(e.target) || drop.has(e.target).length === 0) {
drop.removeClass('active');
dropdown.removeClass('active');
}
});
});
这里的逻辑是:当点击带有.passengers-main-dropdown
类的元素时,下拉列表变为.active
。通过单击文档,算法检查:
.passengers-main-dropdown
是点击我做错了吗?谢谢。
答案 0 :(得分:0)
我通常使用closest()
:
$(document).on('click', function(e){
var $tgt = $(e.target);
if($tgt.closest('.passengers-main-dropdown').length
|| !$tgt.closest('.dropdown-box').length) {
drop.removeClass('active');
dropdown.removeClass('active');
}
});