jquery简单菜单翻转(无动画队列)

发布于 2024-07-22 00:37:33 字数 401 浏览 10 评论 0原文

我有一个简单的无序列表,其中列表项作为菜单项 我创建 jquery 只是为了有一个有趣的翻转效果 是:

$('#nav ul ul li').hover(function(){
$(this).animate({ 
        marginLeft: "20px",
      }, 300 );
}, function(){
$(this).animate({ 
        marginLeft: "0px",
      }, 300 );
});

这个脚本的问题是,如果你多次冲过菜单,就会建立一个动画队列。 我尝试在两者之间使用 .stop() ,但它也会停止其他列表项的动画,这些列表项在任何情况下都应返回默认状态。 有没有办法停止()每个项目的队列? 但不是整个列表?

I have a simple unordered list with list items as menu item
i created the jquery just to have a funny rollover effect
being:

$('#nav ul ul li').hover(function(){
$(this).animate({ 
        marginLeft: "20px",
      }, 300 );
}, function(){
$(this).animate({ 
        marginLeft: "0px",
      }, 300 );
});

the problem with this script is, if you rush over the menu several times, an animation queue builds up.
i tried to use .stop() in between, but then it also stops the animations from the other list items which should return to default state in any case.
is there a way to stop() the queue per item? but not for the whole list?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤独患者 2024-07-29 00:37:33

我不明白为什么 $(this).stop().animate(...) 不适合你,但你也可以尝试这种方法:

$(":not(:animated)", this).animate(...)

这只会触发元素上的动画目前还没有动画化的

I don't see why $(this).stop().animate(...) is not working for you, but you can also try this approach:

$(":not(:animated)", this).animate(...)

which will only trigger the animation on elements that are not currently animated

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文