Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

85
Visualizações
jQuery/Javascript data attribute value undefined on callback

I have these below function for countdown.

$.fn.countdown = function(toTime, callback){
  let $el = $(this);
  var intervalId;

  intervalId = setInterval(function() {
    var now = new Date().getTime();
    var distance = toTime - now;

    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);

    if(distance < 0){
      clearInterval(intervalId);

      if (typeof callback == 'function'){
        callback.call(this);
      }
    }
    else{
      var value = days + "<sup>d</sup> " + (hours > 9 ? hours : '0' + hours) + ":" +  (minutes > 9 ? minutes : '0' + minutes) + ":" +  (seconds > 9 ? seconds : '0' + seconds);
      $el.html(value);
    }
  }, 1000);
};

var date1 = new Date();
date1.setSeconds(date1.getSeconds() + 5);

var date2 = new Date();
date2.setSeconds(date2.getSeconds() + 7);

$('#my_div').countdown(date1.getTime(), () =>{
  var id = $(this).attr("id");

  console.log(id);
  $.ajax({
    url: "set",
    type: "POST",
    data:{
      id: id
    },
    dataType: "JSON",
    success: function (jsonStr){
    }
  });
});

$('#my_div2').countdown(date2.getTime(), () =>{
  var id = $(this).attr("id");

  console.log(id);
  $.ajax({
    url: "set",
    type: "POST",
    data:{
      id: id
    },
    dataType: "JSON",
    success: function (jsonStr){
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="my_div" data-id="1"></div>

<div id="my_div2" data-id="2"></div>

The counting is working good. Now I need to get data-id after the countdown finish. But getting value undefined. Also I need to print text Counting Done to each div my_div and my_div2. Something think like below:

$('#my_div').countdown(new Date("Jun 23, 2022 22:37:25").getTime(), function(){
    callback: function() {
        $(this).text("Counting Done");
    }
});

My question is:

  1. How to get data-id for each div countdown?
  2. How to use callback as per my sample above?
about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda