jquery live hover

Eu 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 linhas que foram adicionadas com js / ajax na mosca …

Existe uma maneira de fazer isso funcionar com events ao vivo?

$("table tr").hover( function () {}, function () {} ); 

O jQuery 1.4.1 agora suporta “hover” para events live (), mas apenas com uma function de manipulador de events:

 $("table tr").live("hover", function () { }); 

Como alternativa, você pode fornecer duas funções, uma para mouseenter e outra para mouseleave:

 $("table tr").live({ mouseenter: function () { }, mouseleave: function () { } }); 
 $('.hoverme').live('mouseover mouseout', function(event) { if (event.type == 'mouseover') { // do something on mouseover } else { // do something on mouseout } }); 

http://api.jquery.com/live/

.live() foi descontinuado a partir do jQuery 1.7

Use .on() e especifique um seletor de descendentes

http://api.jquery.com/on/

 $("table").on({ mouseenter: function(){ $(this).addClass("inside"); }, mouseleave: function(){ $(this).removeClass("inside"); } }, "tr"); // descendant selector 

A partir do jQuery 1.4.1, o evento hover funciona com live() . Basicamente, apenas se liga aos events mouseenter e mouseleave, o que você pode fazer com versões anteriores à 1.4.1 da mesma forma:

 $("table tr") .mouseenter(function() { // Hover starts }) .mouseleave(function() { // Hover ends }); 

Isso requer dois vínculos, mas funciona igualmente bem.

Este código funciona:

  $(".ui-button-text").live( 'hover', function (ev) { if (ev.type == 'mouseover') { $(this).addClass("ui-state-hover"); } if (ev.type == 'mouseout') { $(this).removeClass("ui-state-hover"); } }); 

AVISO: Há uma penalidade significativa no desempenho com a versão ao vivo do hover. É especialmente perceptível em uma página grande no IE8.

Eu estou trabalhando em um projeto onde nós carregamos menus multi-nível com AJAX (nós temos nossas razões :). De qualquer forma, eu usei o método ao vivo para o foco que funcionou muito bem no Chrome (IE9 fez OK, mas não ótimo). No entanto, no IE8, ele não só diminuiu a velocidade dos menus (você precisou pairar por alguns segundos antes de cair), mas tudo na página era dolorosamente lento, incluindo a rolagem e até mesmo a verificação de checkboxs de seleção simples.

Ligar os events diretamente após o carregamento resultou em desempenho adequado.