How to stop jcarousel immediately on mouseover and continue on mouseout

廉价感情. 提交于 2019-12-12 12:22:22

问题


I'm trying to stop a transition with an action(in this case on hover), but i don't know how to achieve it. This is where i'm making the test:

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

I have 3 instances of jcarousel and my goal is to stop the movement(immediately) on mouseover. The problem is: when the mouse is over the carousel, i stop it, but the current transition is ended before the stop, and the sensation is not the desired, i wish to stop the movement immediately on mouseover.

This is the initialization for the first carousel:

$('#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');
});

The others two instances of jcarousel are similar initialized.

UPDATE: I already tried:

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

This stops the movement (scrolling) but i'm not able to start the movement again on mouse out in the same position it was before.

UPDATE 1: I also tried on mouseout (and make it work again)

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

but this has an undesired effect because start the movement from the beginning of the carousel(a reload), from the first item, and i want to restart from the same position it was on mouseover.


回答1:


You may use something like this

    <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>


来源:https://stackoverflow.com/questions/21651059/how-to-stop-jcarousel-immediately-on-mouseover-and-continue-on-mouseout

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!