JSFiddle - React, Tailwind, and code Playground

HTML

<html>
    <head></head>
    <body>
        <div class="timer">180</div>
        <script>
            $(function(){
                $('.timer').timer(function(){
                    alert('отсчет завершен');
                })
            })
        </script>
    </body>
</html>

JavaScript

(function($){
    // Количество секунд в каждом временном отрезке
    var days	= 24*60*60,
    hours	= 60*60,
    minutes	= 60;
    
    $.fn.timer = function(callback){
        callback = callback ? callback : function(){}
        return new $.ctimer(this, callback);
    }
    $.ctimer = function(element, callback) {
        callback = callback || function(){}
        var secs = parseInt(element.html());
        function tick(){
            // Осталось дней
            var sec = secs;
            var d = Math.floor(sec / days);
            sec -= d*days;
			
            // Осталось часов
            var h = Math.floor(sec / hours);
            sec -= h*hours;
			
            // Осталось минут
            var m = Math.floor(sec / minutes);
            sec -= m*minutes;
			
            // Осталось секунд
            var s = sec;
            h = (h+"").length<2 ? "0"+h : h;
            m = (m+"").length<2 ? "0"+m : m;
            s = (s+"").length<2 ? "0"+s : s;
            if(secs==0){
                element.html(null);
                callback();
                return false;
            }
            secs--;
            element.html(d+" дн. "+h+":"+m+":"+s);
            setTimeout(tick, 1000);
        }
        tick();
    }
})(jQuery);