Jquery ui 菜单问题

Posted

技术标签:

【中文标题】Jquery ui 菜单问题【英文标题】:Jquery ui menu issue 【发布时间】:2021-07-16 01:29:44 【问题描述】:

当您在 jquery 菜单中离开子菜单的父项时,关闭子菜单会稍有延迟。 有什么方法可以禁用它并立即关闭它?

*知道它是一个 EOL 死库,但我问的是以防万一你们中的任何人记得什么!

$(function() 
            $("#menu").menu();
);
#menu
width:150px;
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" integrity="sha512-uto9mlQzrs59VwILcLiRYeLKPPbS/bT71da/OEBYEwcdNUk8jYIy+D176RYoop1Da+f9mvkYrmj5MCLZWEtQuA==" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" integrity="sha512-aOG0c6nPNzGk+5zjwyJaoRUgCdOrfSDhmMID2u4+OIslr0GjpLKo7Xm0Ao3xmpM4T8AmIouRkqwj1nrdVsLKEQ==" crossorigin="anonymous" />

</head>
<body>
<ul id="menu">
                <li>
                    <div>W/O submenu</div>
                </li>

                 
                <li>
                <div>With submenu</div>
                <ul><li><div>Submenu</div></li></ul>
                    
                </li>

           </ul>
</body>
</html>

【问题讨论】:

在他们的menu demo example 上的工作方式完全相同,因此可能需要深入研究他们的代码。 一些好消息。菜单小部件确实有 300 毫秒的延迟。所以,如果你下载了非缩小版的js文件(第二个脚本行,去掉min.部分,从url保存文件)然后在本地使用那个文件。在文件中,将第 4946 行的延迟(在菜单小部件中,在第 4943 行注明)更改为较低的值,例如 100,然后保存,重新加载页面并检查行为。 哇,谢谢。我完全删除了延迟参数,就像一个魅力!如果您想要一些功劳,可以发布答案。 我不知道我会完全删除delay,以避免引起其他可能的麻烦(因为它在一些菜单位置中被引用),但将其设置为非常低的值,例如 10或 25 毫秒几乎不明显。我将添加一个接近我的评论的答案。 【参考方案1】:

菜单小部件确实有 300 毫秒的延迟。

所以,如果你下载 js 文件的非缩小版,从这里:

https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js (based on the OP's URL)

然后在本地使用该文件。然后,在文件中,更改第 4946 行的延迟(在菜单小部件中,在第 4943 行注明):

4943 var widgetsMenu = $.widget( "ui.menu", 
4944         version: "1.12.1",
4945         defaultElement: "<ul>",
4946         delay: 300,               // THIS delay
4947         options: 

...到一个较低的值,比如 100(或更低),然后保存、重新加载页面并检查行为。

请注意,我将完全删除 delay,因为存在对该属性/属性的引用,但将其设置为较低的值以使其几乎不引人注意。

【讨论】:

以上是关于Jquery ui 菜单问题的主要内容,如果未能解决你的问题,请参考以下文章

无法让 jQuery-ui 选择菜单呈现

Jquery UI 菜单栏在 Cupertino 主题中显示白色文本

每个单词下方的jQuery-ui自动完成下拉菜单

JQuery UI Datepicker,在下拉菜单中颠倒年份的顺序

单击另一个元素时,您可以触发 jQuery UI 选择菜单吗?

获取 jQuery UI 菜单中选中的 LI 元素的 value 属性