Javascript 在Jquery中单击传播失败

Javascript 在Jquery中单击传播失败,javascript,jquery,html,Javascript,Jquery,Html,对于我正在工作的站点的一部分,我有一组可以拉出的边栏。为了让它们在用户完成操作时隐藏起来,我设置了一个带有单击事件的div(见下文),这样每当用户单击侧边栏之外的某个位置时,侧边栏就会关闭。但是,我遇到的问题是,单击事件处理程序正在捕获事件,运行其方法,然后单击事件似乎停止了。我尝试过使用return true和其他一些我在这里和互联网上找到的东西,但是点击事件似乎已经消失了 $('.clickaway').click(function() { $('body').removeC

对于我正在工作的站点的一部分,我有一组可以拉出的边栏。为了让它们在用户完成操作时隐藏起来,我设置了一个带有单击事件的div(见下文),这样每当用户单击侧边栏之外的某个位置时,侧边栏就会关闭。但是,我遇到的问题是,单击事件处理程序正在捕获事件,运行其方法,然后单击事件似乎停止了。我尝试过使用return true和其他一些我在这里和互联网上找到的东西,但是点击事件似乎已经消失了

$('.clickaway').click(function() {
        $('body').removeClass(drawerClasses.join(' '));
        return true;
    });
编辑:下面是一个例子: 我们的目标是将抽屉取出,并且仍然能够单击按钮来更改文本的颜色。

作为指南,您可以绑定到
$(document).mouseup()事件并确定是否应用某些“切换”条件:

[编辑]-更新示例以演示单击包含div之外的链接

//资源:https://stackoverflow.com/questions/1403615/use-jquery-to-hide-a-div-when-the-user-clicks-outside-of-it
var m=$(“#菜单”);
变量c=$(“#menuContainer”);
变量i=$(“#menuIcon”);
i、 单击(函数(){
m、 切换(“慢”);
});
$(文档).mouseup(函数(e){

console.log(e.target);//问题在于你的
。clickaway
层位于所有
交互的
层之上,例如你的
按钮。因此,单击该按钮,你实际上是在单击该层

您可以做的一件事是在
层上方为要交互的元素应用更高的堆叠顺序。单击离开
层。例如,如果我们应用
位置:相对
,如下所示:

.show-drawerHotkey .ColorButton {
    position: relative;
}
元素现在将处于更高的堆叠顺序(因为它位于
clickaway
之后,并且我们对clickaway应用了no
z-index


这里有一个小提琴演示:

你能把你的整个代码放在JSFIDLE中吗?一个有效的例子?我会试着让它在一个提琴中工作,但我会接受一点。你只需将点击绑定到
文档
,而不是添加另一个div即可。
似乎已经死了
不是一个很好的描述problem@charlietfl你挑吧f我试图描述似乎发生了什么的方式。单击事件消失/不会传播到单击关闭部分之外的任何内容。如果他们单击抽屉外的按钮或标记,e.target.length实际上不会大于0吗?我尝试以这种方式来计算它的全部原因是,我可以关闭抽屉并激活他们同时单击的任何内容。@MichaelHarrison-不,不会。它不是
e.target.length
它是
$(myContainerElement).has(e.target.length
。换句话说,它使用的是jQuery
has()
确定鼠标向上移动事件目标是否是菜单容器的后代……如果不是,则隐藏菜单。@MichaelHarrison-我已更新了答案。如果打开控制台,您可以看到
e.target
是什么。