Handlers com prazo de validade!

No projeto que estou atualmente, uma das ferramentas que mais utilizo é o jQuery! Até porque o Strophe – biblioteca de comunicação com servidor XMPP – usa bastante ele. Uma das coisas com que me deparei no projeto usando jQuery foi a necessidade de fazer com que um evento ocorresse apenas uma vez sobre um elemento. Mais especificamente, um click em cima de um item de menu.

Dava até pra fazer usando algo como isso:

$("#elemento").bind("click", function (event) { 
    alert('Alguma coisa...');
    $(this).unbind(event);
});

Funcionava? SIM! Mas não estava elegante do jeito que eu gostaria. Pesquisando, achei um método pouco comentado em tutoriais e livros de jQuery – lembro agora apenas do livro do Maujor que fala rapidamente. Este é o método .one() do jQuery. Ele faz a mesma coisa do código acima, mas de maneira MUITO MAIS ELEGANTE!!

$("#elemento").one("click", function () { 
    alert('Alguma coisa...');
});

Pronto! Quando o elemento é clicado, executa o callback e não executa mais! LINDO!!! E ainda tem uma outra forma:

$("div").one("click", ".minhaclasse", function () { 
    alert('Alguma coisa...');
});

Neste caso, executa apenas uma vez por elemento que for um div com a classe .minhaclasse. É sempre saber que existem estes métodos no jQuery para simplificar ainda mais nossos códigos e manutenção!

Para saber mais: jQuery .one()

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *