Jquery live hover

Я использую следующий код jquery, чтобы показать кнопку контекстного удаления только для строк таблицы, которые мы наводим на мышь. Это работает, но не для строк, которые были добавлены с помощью js/ajax на лету...

Есть ли способ сделать эту работу живыми событиями?

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

Ответ 1

jQuery 1.4.1 теперь поддерживает "зависание" для событий live(), но только с одной функцией обработчика событий:

$("table tr").live("hover",

function () {

});

В качестве альтернативы вы можете предоставить две функции: одну для mouseenter и одну для mouseleave:

$("table tr").live({
    mouseenter: function () {

    },
    mouseleave: function () {

    }
});

Ответ 2

$('.hoverme').live('mouseover mouseout', function(event) {
  if (event.type == 'mouseover') {
    // do something on mouseover
  } else {
    // do something on mouseout
  }
});

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

Ответ 3

.live() устарел от jQuery 1.7

Используйте .on() вместо этого и укажите селектор потомков

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

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

Ответ 4

Как и в jQuery 1.4.1, событие hover работает с live(). Он в основном просто привязывается к событиям mouseenter и mouseleave, которые вы также можете делать с версиями до 1.4.1:

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

Для этого требуются две привязки, но они работают так же хорошо.

Ответ 5

Этот код работает:

    $(".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");
            }
        });

Ответ 6

ПРЕДУПРЕЖДЕНИЕ. Существует существенная неустойка в работе с живой версией зависания. Это особенно заметно на большой странице на IE8.

Я работаю над проектом, где мы загружаем многоуровневые меню с AJAX (у нас есть наши причины:). Во всяком случае, я использовал живой метод для зависания, который отлично поработал на Chrome (IE9 сделал хорошо, но не отлично). Однако в IE8 он не только замедлял меню (вам приходилось парить пару секунд, прежде чем он упадет), но все на странице было очень медленным, включая прокрутку и даже проверку простых флажков.

Связывание событий непосредственно после их загрузки приводило к адекватной производительности.