Javascript 窗口单击事件在按钮单击事件之前触发
我有两个设置了事件侦听器的组件,一个是菜单组件,另一个是按钮。单击按钮时,我希望在启动按钮的onClick函数之前关闭菜单,但当前事件顺序为: 1) 按钮被点击 2) 按钮的onclick被触发 3) 菜单的onWindow单击事件被激发 两者的设置如下所示: 按钮:Javascript 窗口单击事件在按钮单击事件之前触发,javascript,events,dojo,Javascript,Events,Dojo,我有两个设置了事件侦听器的组件,一个是菜单组件,另一个是按钮。单击按钮时,我希望在启动按钮的onClick函数之前关闭菜单,但当前事件顺序为: 1) 按钮被点击 2) 按钮的onclick被触发 3) 菜单的onWindow单击事件被激发 两者的设置如下所示: 按钮: <button class="sos-btn sos-btn-confirm" data-dojo-attach-event="click: _apply">Apply Filters</button&g
<button class="sos-btn sos-btn-confirm" data-dojo-attach-event="click: _apply">Apply Filters</button>
按钮单击处理程序:
_apply: function(e) {
// do things
}
这里的问题是,我需要在运行按钮的事件处理程序之前关闭菜单,因此我希望顺序是:
1) 按钮被点击
2) 菜单的onWindow单击事件被激发
3) 按钮的onclick被触发
我不介意我是否需要在\u apply
函数的顶部放置一些东西来立即对事件进行冒泡,我只是不知道如何做到这一点
谢谢。我刚刚尝试在setTimeout中包装整个_apply函数,将其从主线程中删除,这就完成了,但是我想知道是否有更优雅的方法。复制关闭菜单的代码并将其粘贴到按钮点击事件的顶部。它们是两个完全独立的模块,我不想这样将它们耦合在一起@伊奥默
_apply: function(e) {
// do things
}