Как связать с событиями JavaScript после изменений DOM - PullRequest
2 голосов
/ 04 мая 2010

У меня есть функция, которая связывается с тегом tr, чтобы обеспечить эффект наведения мыши, как этот:

$ (". Grid tr"). Bind ("mouseenter", function () { $ (Это) .addClass ( "парить"); }). bind ("mouseleave", function () { $ (Это) .removeClass ( "парить"); });

Проблема в том, что сетка загружается через ajax, когда происходит подкачка, или фильтрация и т. Д. Это приводит к полной замене сетки и сбоям всех привязок событий. Есть ли способ привязки к событию, которое автоматически присоединяется к соответствующим элементам, даже когда DOM изменяется?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 04 мая 2010

$.live - это то, что вы хотите:

$(".grid tr").live("mouseenter", function () { $(this).addClass("hover"); }).bind("mouseleave", function () { $(this).removeClass("hover"); });
3 голосов
/ 03 июня 2015

Пожалуйста, используйте .on() с этого момента, так как .live() устарела в jQuery, поскольку неэффективна.

$(".grid tr")
    .on("mouseenter", function () { $(this).addClass("hover"); })
    .on("mouseleave", function () { $(this).removeClass("hover"); });
0 голосов
/ 07 марта 2011

В качестве альтернативы вы можете использовать $.delegate

Дополнительная информация: Как лучше всего связывать событие нажатия jQuery с каждым тегом привязки в каждой строке таблицы

...