Używam następującego kodu jquery, aby wyświetlić kontekstowy przycisk usuwania tylko dla wierszy tabeli, na które najeżdżamy myszą. Działa, ale nie w przypadku wierszy, które zostały dodane za pomocą js / ajax w locie ...
Czy istnieje sposób, aby to działało z wydarzeniami na żywo?
$("table tr").hover(
function () {},
function () {}
);
jquery
live
jquery-1.4
Jorre
źródło
źródło
live
: api.jquery.com/live.live
mówi się, że należy.on
zamiast tego używać . „Od jQuery 1.7 metoda .live () jest przestarzała. Użyj .on (), aby dołączyć programy obsługi zdarzeń”.http://api.jquery.com/live/
źródło
.live
jest teraz przestarzała, zobacz odpowiedź Andre na temat metody zamiany.mouseover
imouseout
zdarzenia w tym miejscu spowodują ciągłe uruchamianie kodu, gdy użytkownik porusza myszą wewnątrz elementu. Myślęmouseenter
imouseleave
są bardziej odpowiednie, ponieważ będzie odpalać tylko raz po wejściu..live()
został wycofany z jQuery 1.7.on()
Zamiast tego użyj i określ selektor podrzędnyhttp://api.jquery.com/on/
źródło
Począwszy od jQuery 1.4.1, zdarzenie hover działa z plikami
live()
. Po prostu wiąże się ze zdarzeniami mouseenter i mouseleave, co można zrobić z wersjami wcześniejszymi niż 1.4.1:Wymaga to dwóch wiązań, ale działa równie dobrze.
źródło
Ten kod działa:
źródło
OSTRZEŻENIE: W przypadku aktywnej wersji wskaźnika myszy występuje znaczny spadek wydajności. Jest to szczególnie widoczne na dużej stronie w IE8.
Pracuję nad projektem, w którym ładujemy wielopoziomowe menu za pomocą AJAX (mamy swoje powody :). W każdym razie użyłem metody na żywo do najechania kursorem, która działała świetnie w Chrome (IE9 działał OK, ale nie świetnie). Jednak w IE8 to nie tylko spowolniło menu (trzeba było najeżdżać kursorem przez kilka sekund, zanim spadło), ale wszystko na stronie było boleśnie powolne, w tym przewijanie, a nawet sprawdzanie prostych pól wyboru.
Wiązanie zdarzeń bezpośrednio po ich załadowaniu skutkowało odpowiednią wydajnością.
źródło