Javascript 为什么以下Jquery event.target无法正常工作

Javascript 为什么以下Jquery event.target无法正常工作,javascript,jquery,Javascript,Jquery,下面是我的代码 功能${ "严格使用",; var按钮=$‘打开按钮’; 变量框=$‘下拉菜单’; 函数初始化{ 事件发生; } 功能事件{ 隐藏; 按钮。点击,打开; } 函数openevent{ 如果event.target!==按钮[0]{ 隐藏; }否则{ box.show; } } 初始化; }jQuery; 身体 html{ 填充:0; 保证金:0; } 容器{ 高度:100px; 宽度:800px; 保证金:0自动; } h1{ 颜色:白色; } 下拉列表{ 高度:600px;

下面是我的代码

功能${ "严格使用",; var按钮=$‘打开按钮’; 变量框=$‘下拉菜单’; 函数初始化{ 事件发生; } 功能事件{ 隐藏; 按钮。点击,打开; } 函数openevent{ 如果event.target!==按钮[0]{ 隐藏; }否则{ box.show; } } 初始化; }jQuery; 身体 html{ 填充:0; 保证金:0; } 容器{ 高度:100px; 宽度:800px; 保证金:0自动; } h1{ 颜色:白色; } 下拉列表{ 高度:600px; 宽度:800px; 背景色:黑色; 保证金:0自动; } event.target!==按钮[0]始终为真

event.target是字段。 按钮[0]是元素。 您可以将open_button id移动到输入字段,这将导致在用户单击输入字段时出现框,但框永远不会消失,因为您的if条件永远不会返回true

您真正想要的是输入字段上的焦点和模糊处理程序,以分别显示和隐藏框:

$“打开按钮输入”。在“聚焦”功能上{ $“下拉列表”。显示 }.关于'blur',函数{ $“下拉列表”。隐藏 }; //根据以下评论添加到答案: $'dropdown'。在'mousedown'上,函数E{ e、 preventDefault//防止用户在框内单击时输入字段失去焦点 }; $'dropdown'。隐藏; 下拉列表{ 高度:600px; 宽度:800px; 背景色:黑色; 保证金:0自动; }
将按钮[0]更改为button@tech2017不可以,[0]访问基础DOM对象-这是正确的,因为event.target也是一个DOM元素。但是为什么var button=$“open_button”?请注意,您已经将jQuery代码放在IIFE中,而不是document.ready事件处理程序中。根据您放置脚本的位置,在您尝试使用目标元素之前,DOM可能还没有准备好?我猜是个孩子。console.logevent.targetHi Daniel,感谢您的评论。它确实有效,但是,您是否注意到,即使在框内单击,框也会关闭。请您建议一种方法,在框内单击时不要关闭框。在我的代码片段中,框在您单击输入字段时出现,在您单击输入字段外时消失。这不是你想要它做的吗?哦,等等,我明白了。1秒。@jeff好的,我已经在答案中添加了这个。从功能的角度来看,它的工作方式应该是这样的。然而,对于我的学习,你能不能把代码放在这样的方式,它检查event.target==id&&event.target==dropdown。如果为真,下拉列表将保持打开或打开状态。否则就关门了。