jquery-logo

JQuery .on() vs .live()

Desenvolvendo um sistema para a Web me deparei com um problema: A nova versão do Jquery não oferece mais suporte ao método .live(), que nos permite atribuir funções para objetos do DOM que não foram carregados na tela ainda (estes seriam carregados mediante alguma ação, através de Ajax).

Pesquisando descobri que o método .live() fora substituido pelo método .on() que é mais flexível e possui algumas vantagens em relação ao seu antecessor. O método .on combina e substitui o .bind, .live e o .delegate. De modo que a sintaxe “$(‘selector’).on(‘event’, callback)” é equivalente ao .bind, não ao .live. No início tive alguma dificuldade em determinar a diferença entre os dois, já que eu precisava de sua funcionalidade de uma forma ou de outra.

Para que o método .on se comporte como o  .live é necessário utilizar sua sintaxe dinâmica (e não a estática, como mostrado acima):

[cc lang=”javascript”]

$(‘.qualquerItemPai’).on(“click”, “.algumItemFilho”, function(){
alert(‘abc’);
return false;
});

[/cc]

O seletor principal é qualquer item do DOM que contenha os itens aos quais precisamos atribuir novos comportamentos. Estes itens são definidos como parâmetro do método.

Mais informações em http://api.jquery.com/on/