2011-06-02 73 views
0

我使用流行的jQuery scrollTo/localScroll插件来创建一个单一的页面导航系统,自动滚动窗口到各种锚标签。我有它没有问题,但我无法阻止排队动画。localscroll jQuery插件 - 动画排队问题

我有一个无序列表的“main_nav”的ID,我现在用跳到锚点:

<ul id="main_nav"> 
    <li><a href="#one">One<a> </li> 
    <li><a href="#two">Two</a></li> 
    <li><a href="#three">Three</a> </li> 
    <li><a href="#four">Four</a> </li> 
</ul> 

当调用功能,有一个名为“停止”参数,它应该是通过jquery stop()函数清除当前排队的动画。该参数在插件中默认为“true”,但我仍然指定了它。该插件还默认将该窗口作为滚动目标。我打电话的功能,像这样:

$(document).ready(function() { 
    $('#main_nav').localScroll({ 
    duration:2000, 
    stop:true 
    }); 
}); 

这工作,但“停止”参数被忽略......如果我点击快速连续四个环节,页面会后,其他滚动到每一个环节,总共需要8秒钟才能完成。不理想!如果我把整个页面包装在一个容器div中,给它一个高度,并将其设置为溢出:scroll;然后使用localScroll函数定位该div,然后停止参数起作用。例如,当这样调用没有更多的动画队列:

$(document).ready(function() { 
    $('#main_nav').localScroll({ 
    target: $('#container'), 
    duration:2000, 
    stop:true 
    }); 
}); 

看来,当插件引用一个div作为目标进行滚动,它能够执行的jQuery stop()函数,但是当目标设置为'窗口'停止功能不起作用。

我试图创建一个jQuery包装器窗口对象和引用,作为目标,像这样:

$(document).ready(function() { 
    $('#main_nav').localScroll({ 
    target: $('window'), 
    duration:2000, 
    stop:true 
    }); 
}); 

...但是这也不管用。在插件本身,默认值是:

$localScroll.defaults = { 
    duration:1000, // How long to animate. 
    axis:'y', // Which of top and left should be modified. 
    event:'click', // On which event to react. 
    stop:true, // Avoid queuing animations 
    target: window, // What to scroll (selector or element). The whole window by default. 
    reset: true // Used by $.localScroll.hash. If true, elements' scroll is resetted before actual scrolling 
}; 

有没有人对如何从cueueing停止动画任何想法?

我使用: 的jQuery 1.6.1,1.4.2 scrollTo,localScroll 1.2.7

回答

0

我已经尝试

$('.menu, .up, #send, #ok').localScroll({ 
    duration: 1800, 
    stop: true, 
    hash: true, 
    onBefore: function(e, elem, $target) { // this = settings 
     $target.stop(); 
    } 
    }); 

但这dons't工作要么

..然后我认为这可能是jQuery版本问题(scrollTo和休息是从2009年),所以我已经回到jquery 1.2.6,仍然没有,所以我想这可以是一个scrollTo插件问题

现在我会尝试写自己的scrollTo插件只使用.animate()

0

我发现了!

我不知道为什么对象窗口不能动画! 在控制台:

$(window).animate({ scrollTop: 110}, 1000); 
TypeError 
$('body').animate({ scrollTop: 110}, 1000); 
[ 
<body>​…​</body>​ 

为了解决这个问题,只是简单地改变目标体

target: $('body') 

,这是它:)

+0

*我已经在动画Window对象没有问题。问题在于,当用户快速连续点击几个链接时,动画就会被提示。当目标设置为$('window')时,添加'stop'参数不起作用。当目标被更改为$('body')时,问题仍然存在...... – 2011-08-16 09:35:51

+0

我在调整窗口大小时滚动窗口时出现此问题,而这根本无法解决问题。 – 2011-11-13 08:54:49