当前位置: 首页 > 知识库问答 >
问题:

当用户点击关闭菜单时,有没有更好的方法隐藏菜单?

丌官向荣
2023-03-14

我使用下面的代码在单击锚时显示/隐藏导航菜单。

我遇到的问题是,第一次加载页面时,我必须单击锚两次才能显示菜单。之后,我可以通过单击切换菜单。我也可以在文档的任意位置单击菜单来隐藏它。

有没有人看到下面的代码有问题,或者知道当用户单击菜单时隐藏菜单的更好方法?

$('#aToggleQuickNavigation').click(function () {
    $('#ulQuickNavigation').toggle();
});

$('html').click(function () {
    if ($('#ulQuickNavigation').css('display') == 'block') {
        $('#ulQuickNavigation').css('display', 'none');
    }
    $('#aToggleQuickNavigation').click(function (event) {
        event.stopPropagation();
    });
    $('#ulQuickNavigation li a').click(function (event) {
        event.stopPropagation();
    });
});

共有2个答案

缑嘉玉
2023-03-14

您是否尝试过使用jQuery内置的slideToggle功能?

基本上,它需要一个显示元素:无;并在单击时显示(或在设置更改逻辑的任何位置)。

例子:

$("#ID"). SlideSwitgle(700);

其中700是您希望幻灯片切换的时间(以毫秒为单位)。

在您的情况下:

$('atoglequicknavigation')。单击(函数(){$('#ulQuickNavigation').slideToggle(500);})

杨腾
2023-03-14

如果单击事件一直冒泡到主体,则隐藏它:

$("body").click(function(){
  $("#ulQuickNavigation").hide();
});

如果用户单击菜单上的任何位置,您已经在阻止该单击的传播,因此身体将永远不会听到它,因此它不会被隐藏。

我注意到的另一件事是,您正在HTML元素的click事件处理程序中绑定click事件。这可能是相当有问题的。每次单击跳转到HTML元素时,您将绑定越来越多的单击事件。

现在就坚持这样做:

// Any click that arrives at the body should close my navigation
$("body").click(function(){
  $("#ulQuickNavigation").hide();
});

// Prevent clicks on nav from reaching the body
$("#ulQuickNavigation").click(function(e){
  e.stopPropagation();
});
 类似资料:
  • 我使用jQueryUI菜单作为上下文菜单,因此当用户单击表中的单元格时,它会显示相关选项。问题是,它不是真的被设计成这样使用的,所以当用户点击菜单外时它不会隐藏。 我尝试使用模糊方法: 由于某种原因,即使您滚动到菜单中的一个选项上,菜单也会隐藏。 有没有简单的解决办法? 编辑:要拉起我使用的菜单: 如果我尝试使用$('body'),它似乎总是首先被调用。单击()将其隐藏。您可以更改jQuery处理

  • 所以我想做的是让我的主菜单浮动,但同时是可调整大小的(窗口宽度),我也有一个隐藏的子菜单,我希望它遵循主菜单的规则。 此外,主菜单并不是从页面的顶部开始,但当你向下滚动时,我希望它能贴在顶部边缘并在那里Rest。 jsFiddle在这里 CSS JAVASCRIPT(jQuery的什么版本?) HTML(固定HTML格式,删除额外标记,添加缺失标记)

  • 我试图创建下拉菜单,点击打开。这是通过添加类到class elements,基本上显示菜单。到目前为止,一切正常,但我真的不明白当用户单击打开的菜单之外的任何地方时,如何关闭打开的下拉菜单。到目前为止,我的代码如下所示: 注意:当用户单击打开的菜单时,该菜单不应关闭。只有当用户在打开的菜单外单击时,它才应关闭。 我如何使用普通的Javascript做到这一点?感谢任何帮助。

  • 我正在使用可点击的下拉菜单进行导航。下拉列表使用输入标记。我陷入困境的地方是,如果访问者单击页面上的其他地方,我需要关闭下拉列表。我正在尝试使用目标属性、matches()方法和onclick事件。 我在控制台中注意到的是,当我打开下拉列表时,两个条件语句都出现了,下拉列表没有打开。这就好像下拉列表同时打开和关闭。 我做错了什么?我如何让它正常工作,以便用户只需打开下拉菜单,并在单击网页上的其他位

  • 这是点击事件。 这是xml 结果将显示在片段中,但抽屉菜单仍然显示。我该怎么做才能关闭它?任何人都给我建议,如何解决这个问题,任何帮助非常感谢。谢谢你。

  • 我是android的初学者。我想创建一个导航菜单抽屉。当我点击图标时,它会打开。当我点击菜单项时,它会显示片段。但是当我点击菜单项时,我的导航抽屉不会自动关闭。每次我关上导航抽屉看我的片段。我不知道在哪里更改代码?随信附上我的主要活动。java,activity_main。xml。任何人都可以帮助我。 activity_main.xml 主要活动。Java语言