JSFiddle - React, Tailwind, and code Playground
HTML
<div id="container">
<div class="element" id="el1"><b>element 1</b> <span class="timeout">10</span> seconds</div>
<div class="element" id="el2"><b>element 2</b> <span class="timeout">1000</span> seconds</div>
<div class="element" id="el3"><b>element 3</b> <span class="timeout">100</span> seconds </div>
<div class="element" id="el4"><b>element 4</b> <span class="timeout">10</span> seconds </div>
<div class="element" id="el5"><b>element 5</b> <span class="timeout">10000</span> seconds</div>
</div>
CSS
.selec {background-color: #f6d13a !important;}
#container {
display: flex;
flex-direction: column;
}
.element {
order: 0;
background-color: #c5c5c5;
padding: 1%;
width: 50%;
margin-bottom: 2px;
transition: all .3s;
text-align:right;
}
b {float: left;}
JavaScript
function timer(selector) {
var self = $(selector);
var sec = parseInt(self.find('span.timeout').text());
console.log(sec)
order++;
var actualTime = $('span.timeout').html();
console.log("Original time " + actualTime)
self.addClass('selec').css('order',order+'');
var interval = setInterval(function() {
sec--;
console.log(sec)
if (sec >= 0) {
self.find('span.timeout').text(sec);
} else if($(this).find('span').text() <= 0) {
console.log(sec)
var text = self.find('span.timeout').text(actualTime);
console.log(actualTime)
clearInterval(interval);
}
$('.element').each(function(){
if($(this).find('span').text() == 0){
$(this).removeClass('selec');
$(this).css('order','0');
}
});
}, 1000);
}
var order = 1;
$("body").on('click', '.element', function() {
timer(this);
});