Estou usando o seguinte código jquery para mostrar um botão de exclusão contextual apenas para as linhas da tabela que estamos passando com o mouse. Isso funciona, mas não para as linhas que foram adicionadas com js / ajax em tempo real ...
Existe uma maneira de fazer isso funcionar com eventos ao vivo?
$("table tr").hover(
function () {},
function () {}
);
jquery
live
jquery-1.4
Jorre
fonte
fonte
live
: api.jquery.com/live.live
, ela diz para usar.on
. "A partir do jQuery 1.7, o método .live () está obsoleto. Use .on () para anexar manipuladores de eventos."http://api.jquery.com/live/
fonte
.live
está obsoleto agora, veja a resposta de Andre para o método de substituição agora.mouseover
e osmouseout
eventos aqui farão com que o código seja acionado continuamente à medida que o usuário move o mouse dentro do elemento. Pensomouseenter
emouseleave
sou mais apropriado, pois só dispara uma vez ao entrar..live()
foi descontinuado a partir do jQuery 1.7Use em
.on()
vez disso e especifique um seletor descendentehttp://api.jquery.com/on/
fonte
A partir do jQuery 1.4.1, o evento hover trabalha com
live()
. Basicamente, apenas se vincula aos eventos mouseenter e mouseleave, o que você também pode fazer com as versões anteriores à 1.4.1:Isso requer duas ligações, mas funciona tão bem.
fonte
Este código funciona:
fonte
AVISO: Há uma penalidade de desempenho significativa na versão ao vivo do hover. É especialmente visível em uma página grande no IE8.
Estou trabalhando em um projeto no qual carregamos menus de vários níveis com o AJAX (temos nossos motivos :). Enfim, usei o método ao vivo para o hover, que funcionou muito bem no Chrome (o IE9 funcionou bem, mas não foi ótimo). No entanto, no IE8, ele não apenas diminuiu a velocidade dos menus (você precisou passar o mouse por alguns segundos antes que ele caísse), mas tudo na página era dolorosamente lento, incluindo rolagem e até verificação de caixas de seleção simples.
A ligação dos eventos diretamente após o carregamento resultou em desempenho adequado.
fonte