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 он не только замедлял меню (вам приходилось парить пару секунд, прежде чем он упадет), но все на странице было очень медленным, включая прокрутку и даже проверку простых флажков.
Связывание событий непосредственно после их загрузки приводило к адекватной производительности.