我是jQuery的新手,我做的第一件事就是我想象的是一个经典任务:为下拉菜单设置动画。 #navBar是一个包含ul的div,当用户将鼠标悬停在li上时,菜单将会下降。下面是代码:jQuery可以明确分配.queue()长度属性吗?
$(document).ready(function()
{
$("#navBar>ul>li").hover(function()
{
var $menu = $(this).find("div");
if ($menu.queue().length > 1) $menu.queue().length = 1;
$menu.slideDown(200).css("z-index", "1");
},
function()
{
$(this).find("div").delay(500).slideUp(400).css("z-index","0");
});
});
我的问题指的是线路:
if ($menu.queue().length > 1) $menu.queue().length = 1;
我这样做是为了避免排队无尽的动画的问题,同时避免使用停止的跳动(真,真) 。这是完美的,但我对明确分配队列长度感到不自在(没有其他我熟悉的编程语言允许我这样做)。
我的恐惧是,通过分配长度,我只是限制jQuery队列走多远,但实际上并没有删除排队的动画,并可能导致内存泄漏。我实际上想要做的是简单地删除超出第一个排队的动画,但似乎无法找到一种方法来做到这一点。
无论如何,正如我所说的,它现在表现完美。任何人都可以告诉我,我是否在做一些愚蠢的事情?
我不知道什么分配给长度将达到,但可能建议反对的100%。它所做的只是返回数组/集合中的项目数量,所以如果它在您的示例中有效,我会想象它可能会弹出某些项目,这可能会导致您在稍后的赛道中出现问题。如果你打算使用jQuery,你可以让它做尽可能多的工作 - 通常会使代码变得更干净和更快 – timothyclifford
是的,我同意,但是喜欢我说过,迄今为止,这是唯一实际提供了理想行为的东西。我会推荐它,如果我能确定我没有破坏什么。我已经测试了很多,没有问题,但很高兴知道它没关系 –
请参阅下面的答案... – timothyclifford