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 菜单栏在 Cupertino 主题中显示白色文本
JQuery UI Datepicker,在下拉菜单中颠倒年份的顺序