1
resposta

Dúvida em relação ao ".on" e ".one"

Por algum motivo, o evento de focus não está se repetindo mesmo usando o ".on'' ao invés do ".one". Testei tanto no Chrome quando no Firefox.

Aqui está meu código:

campo.on("focus", function(){
    var tempo = $("#tempo").text();    
    var cronometroID = setInterval(function(){
        tempo--;
        $("#tempo").text(tempo);
        if(tempo == 1){
            $("#tempo-plural").text(" segundo");    
        };
        if(tempo < 1){
            $("#tempo-plural").text(" segundos");
            clearInterval(cronometroID);
            campo.attr("disabled",true)
        }; 

    },1000);

Qual a explicação disso?

EDIT: Entendi. O Evento funciona da forma que eu quero porque coloquei a variável "tempo" dentro do evento, e não fora (que é o jeito que o professor mostrou no vídeo). Mas qual a lógica por trás disso?

1 resposta

Fala aí Victor, tudo bem? Vamos lá:

A diferença entre on e one é na quantidade de vezes que eles irão executar.

O on é executado sempre que o evento acontecer, ou seja, sempre que o campo receber o focus o evento será disparado e sua função de callback será executada.

Porém, o one será executado apenas na primeira vez.

Espero ter ajudado.