4

I'm using jquery transit to move and element. I want to pause the animation and continue it on click of a button. But i'm unable to figure out how to do it.

JSFiddle : http://jsfiddle.net/b4hwq/2/

I did try

stop().transition({});

but it is throwing an error.

Jeff
  • 12,147
  • 10
  • 51
  • 87
user1184100
  • 6,742
  • 29
  • 80
  • 121

3 Answers3

2

You can use clearQueue() to stop the animation

clearQueue() : Stop the remaining functions in the queue

jsFiddle here

HTML

<div class="box"></div>
<button id="restartTransition">Click Me</button>

CSS

.box{
    opacity: 0.8;
position: absolute;
left: 0;
top: 5%;
background: #505060;
border-radius: 1px;
box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.2);
margin: -16px 0 0 -16px;
width: 32px;
height: 32px;
z-index: 2;
}

jQuery

$(document).ready(function(){
    $("#restartTransition").on("click", function(){
        $('.box').clearQueue().transition({ x: '0px' },10);
        $('.box').transition({ x: '350px' },5000);
    });
});
Donovan Charpin
  • 3,567
  • 22
  • 30
  • Thank you donovan but I want to pause the animation and continue from the same place where I have paused. Above code will not pause it. – user1184100 Oct 30 '13 at 13:55
  • I think it's not possible with transit. There are no way to resolve this problem. Maybe use animate() to be able to execute stop(). – Donovan Charpin Oct 30 '13 at 14:12
1

I have update the fiddle with the complete function from the transit library:

$('.box').transition({
            x: '350px',
            duration: 5000,
            complete: function() {
                alert("complete!");
            }
        });

jsfiddle

The complete function is still executed even when using clearQueue() or stop()

DavidDunham
  • 1,245
  • 1
  • 22
  • 44
0

You were most of the way there with .stop() I just added a little logic to tell it what to do when it stops.

Working Example

$('button').click(function () {
    if (!$('.box').hasClass('stop')) { // if the box does not have class "stop"
        $('.box').stop().transition({  // stop the transition
            x: $('.box').offset().left + $('.box').width() / 2  // where the box should be when it stops
        }, 1).addClass('stop'); // simple add class for easy button control  
    } else { // if the box has class "stop"
        $('.box').transition({
            x: '350px' 
        }, 5000).removeClass('stop'); // continue with regularly scheduled programming then remove "stop"
    }
});
apaul
  • 16,092
  • 8
  • 47
  • 82