我有以下代码:
<script>
$(document).ready(
function()
{
var middleIndex = 3;
var maxIndex = $("ul li").length - 1;
var minIndex = 0;
$('ul#reel li').mouseover(function()
{
var index = $(this).parent().children().index(this);
var tempIndex;
var showIndex;
var visibleRows = $("ul li:visible").length;
if(index > middleIndex && visibleRows == 7)
{
tempIndex = middleIndex - 3;
showIndex = middleIndex + 4;
if(tempIndex <= maxIndex && showIndex <= maxIndex)
{
$("ul li:eq("+tempIndex+")").hide(500);
$("ul li:eq("+showIndex+")").show(500);
middleIndex++;
}
}
else if(index < middleIndex)
{
tempIndex = middleIndex + 3;
showIndex = middleIndex - 4;
if(tempIndex <= maxIndex && showIndex >= minIndex)
{
$("ul li:eq("+tempIndex+")").hide("slow");
$("ul li:eq("+showIndex+")").show("slow");
middleIndex--;
}
}
});
});
</script>
我希望右侧的动画与左侧的动画一样平滑。如何才能做到这一点?我认为它在右侧减速的原因是因为它遍历所有LI以便找到最大索引,但我不确定。
答案 0 :(得分:1)
从第一个if语句中删除&& visibleRows == 7
,或将其更改为&& visibleRows >= 7
,解决了这个问题。
当其中一个窗格处于转换状态时,visibleRows
正在评估为8或更多,这导致它停止,并且它不会继续,直到鼠标再次移动。如果允许代码在鼠标向右移动时运行,则动画排队很好。