javascriptjqueryspin.js

spin.js - Can't remove the spinner?


I can't seem to stop this spinner no matter what I try.

I have searched around for the way to do it but nothing I have tried works.

Fiddle:

http://jsfiddle.net/gmvT4/5/

Backup code:

var opts = {
    lines: 13, // The number of lines to draw
    length: 5, // The length of each line
    width: 2, // The line thickness
    radius: 5, // The radius of the inner circle
    corners: 1, // Corner roundness (0..1)
    rotate: 58, // The rotation offset
    direction: 1, // 1: clockwise, -1: counterclockwise
    color: '#fff', // #rgb or #rrggbb or array of colors
    speed: 0.9, // Rounds per second
    trail: 100, // Afterglow percentage
    shadow: false, // Whether to render a shadow
    hwaccel: false, // Whether to use hardware acceleration
    className: 'spinner', // The CSS class to assign to the spinner
    zIndex: 2e9, // The z-index (defaults to 2000000000)
    top: '50%', // Top position relative to parent
    left: '50%' // Left position relative to parent
};

var target = document.getElementById('foo');

$(document).on('click', '#spin', function () {
    var spinner = new Spinner(opts).spin(target);
});

$(document).on('click', '#stop', function () {
    $("#foo").data('spinner').stop();
});

<div id="foo"></div>
<button id="spin">Spin!</button>
<button id="stop">Stop!</button>

Thanks for any help! Craig.


Solution

  • Uncaught TypeError: Cannot read property 'stop' of undefined

    This error tells you something. You're trying to run .stop() on $("#foo").data('spinner'). Instead, use the instance created by spinner, which you'll need to first declare outside of the scope of that click event.

    var spinner;
    
    $(document).on('click','#spin',function(){
      spinner = new Spinner(opts).spin(target);
    });
    
    $(document).on('click','#stop',function(){
      spinner.stop();
    });
    

    Updated fiddle c/o René Roth