Stop and Reset Harvest's Tick Counter jQuery Plugin

644 Views Asked by At

Anyone knows how to stop and reset Harvest's Tick counter jQuery plugin? I want to stop counter on specific number and reset to primary start up number.

You can checkout my code here.

HTML Markup:

<span class="tick tick-flip tick-promo">5,000</span>

jQuery Logic:

<script type="text/javascript">
$(document).ready(function () {
    startCounter();
});

function startCounter() {
    $('.tick').ticker({
        delay: 1000,
        incremental: 1,
        separators: true
    });
}

var myCounter = setInterval(function resetCounter() {
    var lsCurrentTick = $('.tick').find('.tick-new').text();

    if (lsCurrentTick > 5010) {
        $.fn.ticker.stop();
    }
}, 1000);

</script>
2

There are 2 best solutions below

3
On BEST ANSWER

I had to read the code to figure this out. Here is a DEMO

$(startCounter);

function startCounter() {
    var tickObj = $('.tick').ticker({
        delay: 1000,
        incremental: 1,
        separators: true
    })[0];
    setInterval(function () {
        if (tickObj.value >= 5002) {
            tickObj.stop();
            tickObj.value = 5000;
            tickObj.start();
        }
    }, 1000);
}

If you are feeling brave you can mess with Tick.prototype.tick DEMO

function startCounter() {
    var tickObj = $('.tick').ticker({
        delay: 1000,
        incremental: 1,
        separators: true
    })[0];
    tickObj.tick = (function (tick) {
        return function () {
            var ret = tick.call(tickObj);
            if (tickObj.value > 5002) {
                tickObj.stop();
                tickObj.value = 5000;
                tickObj.start();
            }
            return ret;
        };
    }(tickObj.tick));
}
0
On

Have a reference to the ticker and to reset you would have to do

ticker[0].stop();
ticker[0].value = 5000;
ticker[0].start();

Full example

$(document).ready(function () {
    var ticker;
    startCounter();
});

function startCounter() {
    ticker = $('.tick').ticker({
        delay: 1000,
        incremental: 1,
        separators: true,
    });
}
var myCounter = setInterval(function resetCounter() {
    var lsCurrentTick = $('.tick').find('.tick-new').text();

    if (lsCurrentTick > 5003) {
        reset();
    }
}, 1000);
function stop(){
    ticker[0].stop();
}
function reset(){
    ticker[0].stop();
    ticker[0].value = 5000;
    ticker[0].start();
}

Here is a demo