Я использую следующий код jquery, чтобы показать контекстную кнопку удаления только для тех строк таблицы, которые мы наведем мышью. Это работает, но не для строк, которые были добавлены с помощью js / ajax на лету ...
Есть ли способ заставить это работать с живыми событиями?
$("table tr").hover(
function () {},
function () {}
);
jquery
live
jquery-1.4
Jorre
источник
источник
live
: api.jquery.com/live.live
он говорит, чтобы использовать.on
вместо. "Начиная с jQuery 1.7, метод .live () устарел. Используйте .on () для присоединения обработчиков событий."http://api.jquery.com/live/
источник
.live
устарела, см. ответ Андре за способ замены.mouseover
иmouseout
событий здесь будет вызывать непрерывный запуск кода, когда пользователь перемещает мышь внутри элемента. Я думаюmouseenter
иmouseleave
более уместно, так как он будет срабатывать только один раз при входе..live()
было объявлено устаревшим с jQuery 1.7Используйте
.on()
вместо этого и укажите селектор потомковhttp://api.jquery.com/on/
источник
Начиная с jQuery 1.4.1, событие hover работает с
live()
. Он в основном просто привязывается к событиям mouseenter и mouseleave, что также можно делать с версиями до 1.4.1:Это требует двух связей, но работает так же хорошо.
источник
Этот код работает:
источник
ПРЕДУПРЕЖДЕНИЕ. Существует значительная потеря производительности с живой версией hover. Это особенно заметно на большой странице IE8.
Я работаю над проектом, в котором мы загружаем многоуровневые меню с помощью AJAX (у нас есть свои причины :). Во всяком случае, я использовал живой метод для наведения, который отлично работал на Chrome (IE9 сделал хорошо, но не отлично). Однако в IE8 он не только замедлял меню (вам пришлось зависать на пару секунд, прежде чем он упал), но и все на странице было мучительно медленным, включая прокрутку и даже проверку простых флажков.
Связывание событий непосредственно после их загрузки привело к адекватной производительности.
источник