Mam funkcję, która łączy się z tagiem tr, aby zapewnić efekt mouseover w następujący sposób:
$ (".net tr"). bind ("mouseenter", function () { $ (this) .addClass ("hover"); }). bind ("mouseleave", function () { $ (this) .removeClass ("hover"); });
Problem polega na tym, że siatka jest ładowana przez ajax, kiedywywołanie stronicowania lub filtrowanie itp. Powoduje to całkowite zastąpienie siatki i zawieszenie wszystkich powiązań zdarzeń. Czy istnieje sposób powiązania zdarzenia, które automatycznie dołącza się do pasujących elementów, nawet gdy zmienia się DOM?
Dzięki!
Odpowiedzi:
4 dla odpowiedzi № 1$.live
jest to, czego chcesz:
$(".grid tr").live("mouseenter", function () { $(this).addClass("hover"); }).bind("mouseleave", function () { $(this).removeClass("hover"); });
3 dla odpowiedzi № 2
Proszę użyć .on()
od teraz, jako .live()
jest przestarzałe w jQuery, ponieważ jest nieefektywne.
$(".grid tr")
.on("mouseenter", function () { $(this).addClass("hover"); })
.on("mouseleave", function () { $(this).removeClass("hover"); });
0 dla odpowiedzi № 3
Ewentualnie możesz użyć $.delegate
Więcej informacji: jaka jest najlepsza praktyka wiązania zdarzenia kliknięcia jQuery do każdego znacznika zakotwiczenia w każdym wierszu tabeli