如何在鼠标悬停时立即停止jcarousel并继续mouseout

时间:2014-02-08 19:55:18

标签: jquery css3 jcarousel

我正试图通过动作停止转换(在这种情况下是悬停),但我不知道如何实现它。 这是我正在进行测试的地方:

http://lvemil.net/gla/web/

我有3个jcarousel个实例,我的目标是在鼠标悬停时停止(立即)移动。 问题是:当鼠标在旋转木马上方时,我会停止它,但当前的过渡在停止之前结束,并且感觉不是理想的,我希望在鼠标悬停时立即停止运动。

这是第一个轮播的初始化:

$('#jcarousel1')
.jcarousel({
    'animation': {
        'duration': 6000,    //DEFINE SPEED
        'easing':   'linear',
        'complete': function() {
        //ON ANIMATION COMPLETE ACTION GO HERE
        }
    },
    'wrap': 'circular'


}).jcarouselAutoscroll({
    interval: 1,
    target: '+=1',
    autostart: true
}).on('mouseover',function(e){
    $(this).jcarouselAutoscroll('stop');
}).on('mouseout',function(e){
    $(this).jcarouselAutoscroll('start');
});

其他两个jcarousel实例的初始化类似。

更新: 我已经尝试过了:

$('#jcarousel1').jcarousel('list').stop();

这会停止移动(滚动),但是我无法在鼠标移出时再次开始移动,与之前的位置相同。

更新1: 我也尝试过mouseout(并让它再次运行)

$('#jcarousel1').jcarousel('destroy')
$('#jcarousel1').jcarousel( arrayWithInitOptions )

但是这会产生不良影响,因为从第一个项目开始从轮播开始(重新加载)开始移动,我想从鼠标悬停时的相同位置重新开始。

1 个答案:

答案 0 :(得分:1)

你可以使用这样的东西

    <script type="text/javascript" src="jquery.jcarousel.min.js"></script>
    <script type="text/javascript">
    function mycarousel_initCallback(carousel)
    {
        // Pause autoscrolling if the user moves with the cursor over the clip.
        carousel.clip.hover(function() {
            carousel.stopAuto();
        }, function() {
            carousel.startAuto();
        });
    };

    jQ=jQuery.noConflict();
    jQ(document).ready(function() {
        jQ('#mycarousel').jcarousel({
                    auto: 3,
                    animation: 1000,
                    scroll: 1,
                    easing: "linear",
                    wrap: 'circular',
                    initCallback: mycarousel_initCallback
        });
    });

    </script>