Javascript JS DOM |选择DOM元素的所有子元素

Javascript JS DOM |选择DOM元素的所有子元素,javascript,events,dom,dom-events,Javascript,Events,Dom,Dom Events,我在JS中创建了一个日期选择器。单击具有指定类的输入时,将触发日期选择器 当我从输入或日期选择器中单击时,它会隐藏 问题: 当我单击日期选择器时,它会隐藏,因为我不是在单击日期选择器本身,而是在单击它的多个子项之一 我试过: 在IF语句中添加或设置条件(见下文) 使用“date_picker.childNodes”选择日期选择器的所有子节点,但只选择前两个子节点 我想要什么: 选择日期选择器的所有DIV元素;所以当我点击它时,它仍然显示日期选择器。如何?(如果你有别的解决办法,我就要了

我在JS中创建了一个日期选择器。单击具有指定类的输入时,将触发日期选择器

当我从输入或日期选择器中单击时,它会隐藏

问题:

  • 当我单击日期选择器时,它会隐藏,因为我不是在单击日期选择器本身,而是在单击它的多个子项之一
我试过:

  • 在IF语句中添加或设置条件(见下文)
  • 使用“date_picker.childNodes”选择日期选择器的所有子节点,但只选择前两个子节点
我想要什么:

  • 选择日期选择器的所有DIV元素;所以当我点击它时,它仍然显示日期选择器。如何?(如果你有别的解决办法,我就要了)
日期选择器:

<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>
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);

检查在
目标上调用
最近('.date picker')
是否返回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

哇,我不知道这个函数。它工作得很好。非常感谢你。附:记下笔记中的
false