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

当用户点击外部时隐藏jQuery UI菜单

庄实
2023-03-14

我使用jQueryUI菜单作为上下文菜单,因此当用户单击表中的单元格时,它会显示相关选项。问题是,它不是真的被设计成这样使用的,所以当用户点击菜单外时它不会隐藏。

我尝试使用模糊方法:

$("#menu").menu({
    blur: function( event, ui ) {
        $("#menu").css('top', '-1000px');
        $("#menu").css('left', '-1000px');
    }
});

由于某种原因,即使您滚动到菜单中的一个选项上,菜单也会隐藏。

有没有简单的解决办法?

编辑:要拉起我使用的菜单:

$("table.adminScheduleViewer tr td:nth-child(4), table.adminScheduleViewer tr td:nth-child(5), table.adminScheduleViewer tr td:nth-child(6), table.adminScheduleViewer tr td:nth-child(7), table.adminScheduleViewer tr td:nth-child(8), table.adminScheduleViewer tr td:nth-child(9), table.adminScheduleViewer tr td:nth-child(10)").click(function(event){
    $("#menu").css('top', event.pageY);
    $("#menu").css('left', event.pageX);
});

如果我尝试使用$('body'),它似乎总是首先被调用。单击()将其隐藏。您可以更改jQuery处理单击的顺序吗?

共有3个答案

司雅畅
2023-03-14

我用它来隐藏我的jquery-ui菜单,当用户点击菜单之外。

$('body:not(#menu)')
.off('click')
.on( 'click', function() {
    $('body:not(#menu)')
    .off('click');
    $('#menu')
    .hide();
});

与上述答案类似,但隐藏菜单元素,而不是将其移出视口。在调用一次单击句柄以保留其他单击功能后,还将禁用该句柄。

杜俊晤
2023-03-14

比如说:

           $('body').not($('#menu').find('*'))
             .bind('click',function(){
                $("#menu").css('top', '-1000px');
                $("#menu").css('left', '-1000px');
             });

让我们处理身体上的点击,如果点击发生不在菜单上的任何地方,做你的隐藏。

段干博涉
2023-03-14
 $('body:not(#menu)').click(function(){
     $("#menu").css({ 'top' : '-1000px', 'left' : '-1000px' });
 });

我觉得这样更性感一点

 类似资料:
  • 我使用下面的代码在单击锚时显示/隐藏导航菜单。 我遇到的问题是,第一次加载页面时,我必须单击锚两次才能显示菜单。之后,我可以通过单击切换菜单。我也可以在文档的任意位置单击菜单来隐藏它。 有没有人看到下面的代码有问题,或者知道当用户单击菜单时隐藏菜单的更好方法?

  • 问题内容: 我正在尝试使用复选框和过滤器选项创建多选下拉列表。我试图隐藏列表,但我在外面单击却无法弄清楚。感谢你的帮助。 http://plnkr.co/edit/tw0hLz68O8ueWj7uZ78c 问题答案: 请注意,打开第二个弹出窗口(在具有多个选择的页面上)时,您的解决方案(问题中提供的Plunker)不会关闭其他框的弹出窗口。 通过单击一个框打开一个新的弹出窗口,单击事件将始终停止。

  • 问题内容: 我正在使用此代码: 和这个 HTML : 问题是我的链接位于内,单击时它们不再起作用。 问题答案: 遇到同样的问题,想出了这个简单的解决方案。它甚至可以递归工作:

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

  • 我正在使用: https://github.com/iPaulPro/SlidingMenu 在我的例子中,BehindContentView是一个ListFragment。 1.单击图像以获取behindView(调用toggle();)。 2. onListItem点击会Activity_2显示点击项目的文本。 3.在这个Activity_2中,当我单击device back按钮时,我会看到主

  • 问题内容: 我试图手动关闭引导程序弹出窗口,以在单击或不是弹出窗口的任何位置时将其关闭。 我发现最接近完成此操作的方法是创建一个指令,但这是用于手动触发的,如果变量为_true_ 或 false 。 如果我单击非弹出窗口的任何内容,谁能帮助我找出如何关闭它? 我不介意使用jQuery,但我不知道如何调用关闭。 通常可以解决问题,但是我的弹出窗口包含需要单击的内容。我的弹出式窗口内部有一个_焦点,_