在Firefox5中,jQuery slideDown()在子列表项中启动一系列动画
我使用jQuery创建了一个下拉菜单。因此,当我将鼠标悬停在按钮上时,它会在菜单上向下滑动。现在,如果我将鼠标移出菜单,并在它向上滑动(菜单有很多项,因此有足够的时间将鼠标移回菜单)到下拉菜单上之前将其移回,它将启动一系列slideDown()和slideUp()函数,直到我移动菜单的鼠标或移回按钮,它才会停止。下面是我的jQuery代码:在Firefox5中,jQuery slideDown()在子列表项中启动一系列动画,jquery,slidedown,slideup,mouseenter,firefox-5,Jquery,Slidedown,Slideup,Mouseenter,Firefox 5,我使用jQuery创建了一个下拉菜单。因此,当我将鼠标悬停在按钮上时,它会在菜单上向下滑动。现在,如果我将鼠标移出菜单,并在它向上滑动(菜单有很多项,因此有足够的时间将鼠标移回菜单)到下拉菜单上之前将其移回,它将启动一系列slideDown()和slideUp()函数,直到我移动菜单的鼠标或移回按钮,它才会停止。下面是我的jQuery代码: $(function() { $('#slideshow1').cycle(); $('#projects').mouseenter(
$(function() {
$('#slideshow1').cycle();
$('#projects').mouseenter(function(){
$('#dd_Projects').slideDown();
});
$('#projects').mouseleave(function(){
$('#dd_Projects').slideUp();
});
});
我一直在网上寻找,我已经尝试过e.stopPropagation(),但它不起作用
这只发生在Firefox中,在IE7、IE8、Safari、Chrome中一切正常,但不确定Firefox的其他版本
请建议你应该做你想做的事。传入true
作为清除动画队列的第一个参数。您可能不想跳到动画的末尾,因此不要将true作为第二个参数传递
比如:
$('#dd_Projects').stop(true).slideDown('fast', function(){
$(this).css('height', '');
});
及
取代当前幻灯片的是,你应该做到这一点。应该做到你想要的。传入true
作为清除动画队列的第一个参数。您可能不想跳到动画的末尾,因此不要将true作为第二个参数传递
比如:
$('#dd_Projects').stop(true).slideDown('fast', function(){
$(this).css('height', '');
});
及
代替您当前的幻灯片,您应该可以做到这一点。请参阅,谢谢您的回复。它起了一点作用,但有一个问题。现在菜单不会像以前一样疯狂,但是现在如果我移出菜单并返回,当我将鼠标移回菜单时,菜单动画会停止在任何位置,但是如果我将鼠标悬停在按钮上,它不会滑下整个菜单,它向下滑动,直到我早些时候把鼠标带回来时的位置…希望我能用更好的语言解释…有意义吗?啊,我想我明白你的意思了。如果停止向下滑动,它将保留高度数据集。你需要澄清这一点。我会相应地更新我的答案。你太棒了!!成功了!不过,我做了一点修改,对于slideUp,而不是我指定的高度display:none。现在,它在所有浏览器中都能完美工作。非常感谢你$('dd_Projects').stop(true).slideUp('slow',function(){$(this).css('display','none');});我认为slideUp将设置显示:无;无论如何高度重置在那里,以便在完成滑动时清除高度。如果没有此选项,则会发生以下情况:如果向下滑动并使用slideUp中断,则高度数据将保留在中断时的任何位置。如果您再次向下滑动,它将滑动到高度值(不是一直滑动),然后slideDown回调将触发,从而移除高度,导致物体一直向下“跳跃”。如果在slideUp完成时也清除了height,则不会发生这种情况。你完全正确,不需要css,display:none。你的代码工作完美!再次感谢!谢谢你的回复。它起了一点作用,但有一个问题。现在菜单不会像以前一样疯狂,但是现在如果我移出菜单并返回,当我将鼠标移回菜单时,菜单动画会停止在任何位置,但是如果我将鼠标悬停在按钮上,它不会滑下整个菜单,它向下滑动,直到我早些时候把鼠标带回来时的位置…希望我能用更好的语言解释…有意义吗?啊,我想我明白你的意思了。如果停止向下滑动,它将保留高度数据集。你需要澄清这一点。我会相应地更新我的答案。你太棒了!!成功了!不过,我做了一点修改,对于slideUp,而不是我指定的高度display:none。现在,它在所有浏览器中都能完美工作。非常感谢你$('dd_Projects').stop(true).slideUp('slow',function(){$(this).css('display','none');});我认为slideUp将设置显示:无;无论如何高度重置在那里,以便在完成滑动时清除高度。如果没有此选项,则会发生以下情况:如果向下滑动并使用slideUp中断,则高度数据将保留在中断时的任何位置。如果您再次向下滑动,它将滑动到高度值(不是一直滑动),然后slideDown回调将触发,从而移除高度,导致物体一直向下“跳跃”。如果在slideUp完成时也清除了height,则不会发生这种情况。你完全正确,不需要css,display:none。你的代码工作完美!再次感谢!