【发布时间】:2011-02-01 09:13:43
【问题描述】:
我有以下 Jquery:
$("#collapse-menu > li > a").click(function() {
$(this).toggleClass("expanded").toggleClass("collapsed").find("+ ul").slideToggle("medium");
});
它的基本作用是展开或折叠包含下拉菜单的嵌套“列表”菜单(简化示例):
<ul id="collapse-menu">
<li><a class="expanded">Basic Details</a>
<ul>
<li>
<select> .... </select>
</li>
<li>
<select> .... </select>
</li>
除了在任何下拉菜单中选择了较大的值外,代码工作得非常好。此时,单击时,菜单仍会正确展开/折叠,但在此过程中会快速“闪烁”,就好像整个元素正在以某种方式被重置一样。数据本身很好,但不想要的是闪烁。
奇怪的是,如果在下拉列表中选择了一个小值,则没有闪烁。选择大值时(例如,在年龄下降到18-99的年龄下降)时,闪烁开始发生。
谁能告诉我为什么会这样?或者是否有导致此问题的 Jquery 有问题。
谢谢。
更新:
为此添加赏金。已经在网上尝试了一些类似的插件/解决方案,但是当默认选择大的下拉值时,它们似乎都遇到了这种“闪烁”的问题。
如果有帮助,这里有一个典型的类似解决方案:http://www.i-marco.nl/weblog/jquery-accordion-menu/index_collapsed.html# ...但是当在手风琴内添加下拉菜单时,它会遇到同样的问题。
我希望有人有一个干净的解决方案,而不是需要以某种方式破解它。
【问题讨论】:
-
出于好奇,为什么要使用这么大的下拉菜单?还有其他(更好的)方法可以强制输入 2 位数字、最小值 18 等。这将使您提出的问题消失,并使您的应用程序更易于使用(恕我直言)启动。我的一般经验法则是下拉列表不应包含超过 10 个项目,绝对不要超过 20 个。
-
@GalacticCowboy:谢谢,但在这种情况下需要长下拉菜单。这是呈现所需表单元素的最简单的方式。例如,它包括一个国家下拉菜单(220 个选项)。
-
我认为选择列表(下拉菜单)最多可以包含 100 个元素,只要它们按逻辑排序以便用户可以快速浏览它们。当您意识到可用性几乎消失时,选择具有 200 多个选项的列表。
-
每种情况都不同。无论如何,问题不在于可用性。没有比在选择中列出国家更好的方法了,它超过了 200 个选项。
-
不是一个真正的答案,但您是否考虑过至少为用户提供自动完成功能而不是正常的下拉菜单bassistance.de/jquery-plugins/jquery-plugin-autocomplete
标签: javascript jquery drop-down-menu toggle slide