Há muitas respostas, cada uma abordando alguns pontos - espero que isso possa lhe dar sua resposta, com uma boa explicação sobre o que é e como usar.
Usando click()
é um apelido para bind('click' ...)
. O uso bind()
considera o DOM como ele é quando o ouvinte de evento está sendo configurado e vincula a função a cada um dos elementos correspondentes no DOM. Ou seja, se você usar $('a').click(...)
, vinculará a função fornecida ao evento click de cada tag âncora no DOM encontrada quando esse código for executado.
Usar live()
era a maneira antiga em jQuery; ele foi usado para vincular eventos exatamente como bind()
faz, mas não apenas os vincula a elementos no DOM quando o código é executado - ele também escuta as alterações no DOM e vinculará eventos a quaisquer elementos futuros correspondentes. Isso é útil se você estiver fazendo manipulação de DOM e precisar que exista um evento em alguns elementos que podem ser removidos / atualizados / adicionados ao DOM posteriormente, mas não existem quando o DOM é carregado pela primeira vez.
A razão que live()
agora está depreciado é porque foi mal implementado. Para usar live()
, você tinha que ser capaz de selecionar pelo menos um elemento no DOM inicialmente (eu acredito). Isso também fez com que uma cópia da função fosse executada para ser associada a cada elemento - e se você tiver 1000 elementos, são várias funções copiadas.
A criação da on()
função foi para superar esses problemas. Ele permite que você vincule um único ouvinte de evento a um objeto que não mudará no DOM (portanto, você não pode usar on()
em um elemento que será removido / adicionado ao DOM posteriormente - vincule-o a um objeto pai) e simplesmente aplique um elemento "filtro" para que a função só seja executada quando for enviada para um elemento que corresponda ao seletor. Isso significa que você tem apenas uma função existente (não um monte de cópias) vinculada a um único elemento - uma abordagem muito melhor para adicionar eventos "ao vivo" no DOM.
... e é isso que as diferenças são, e porque cada função existe e porque live()
é depreciada.
on
aclick
causaclick
como um sons de nomes de função como um verbo, uma ação, quando o que ele faz é não clicar no elemento (como você também pode fazer com a mesmaclick
função)