我在JS中创建了一个日期选择器。单击具有指定类别的输入时,将触发日期选择器。
当我单击输入或日期选择器的OUT时,它会隐藏。
问题:
我尝试过:
我想要的:
日期选择器:
<div class="date-picker">
<div class="date-picker-header">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
<div class="date-picker-body">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
</div>
JS触发日期选择器:
var date_picker = document.querySelector(".date-picker");
var input = document.querySelector(".input-date-picker");
document.addEventListener("mousedown", function(e) {
// If the INPUT or the DATE_PICKER or any of its children is clicked.
if(e.target == input || e.target == date_picker || /* date_picker children */) {
// Triggers the date-picker.
}
else {
// Hides the date-picker.
}
}, false);
答案 0 :(得分:1)
检查在closest('.date-picker')
上调用target
是否返回datepicker元素-如果是,则单击的元素是datepicker或其子元素之一:
document.addEventListener("mousedown", function(e) {
// If the INPUT or the DATE_PICKER or any of its children is clicked.
if(e.target === input || e.target.closest('.date-picker')) {
// Triggers the date-picker.
}
else {
// Hides the date-picker.
}
});
如果需要,可以随意省略第三个false
参数,无论如何都要捕获默认值false
。