( Spójrz na ostatnią edycję w tej odpowiedzi, jeśli chcesz używać .on()z elementami wypełnionymi JavaScript )
Użyj tego dla elementów, które nie są wypełniane za pomocą JavaScript:
$(".selector").on("mouseover", function () {
//stuff to do on mouseover
});
.hover()ma własny moduł obsługi: http://api.jquery.com/hover/
Jeśli chcesz zrobić wiele rzeczy, połącz je w .on()module obsługi w następujący sposób:
$(".selector").on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
});
Zgodnie z odpowiedziami podanymi poniżej możesz używać hoverz.on() , ale:
Chociaż zdecydowanie zniechęcony jest nowy kod, możesz zobaczyć pseudo-zdarzenie „hover” używane jako skrót dla ciągu „mouseenter mouseleave”. Dołącza jeden moduł obsługi zdarzeń dla tych dwóch zdarzeń, a moduł obsługi musi sprawdzić event.type, aby ustalić, czy zdarzenie to jest centrum myszy, czy pozostawienie myszy. Nie należy mylić nazwy pseudo-zdarzenia „hover” z metodą .hover (), która akceptuje jedną lub dwie funkcje.
Ponadto nie ma żadnych korzyści związanych z wydajnością korzystania z niego i jest bardziej nieporęczny niż zwykłe używanie mouseenter lub mouseleave. Podana przeze mnie odpowiedź wymaga mniej kodu i jest właściwym sposobem na osiągnięcie czegoś takiego.
EDYTOWAĆ
Minęło trochę czasu, odkąd udzielono odpowiedzi na to pytanie i wydaje się, że zyskało ono trochę trakcji. Powyższy kod nadal obowiązuje, ale chciałem dodać coś do mojej oryginalnej odpowiedzi.
Chociaż wolę używać mouseenteri mouseleave(pomaga mi zrozumieć, co się dzieje w kodzie) z .on()nim, to tak samo jak pisanie poniższegohover()
$(".selector").hover(function () {
//stuff to do on mouse enter
},
function () {
//stuff to do on mouse leave
});
Ponieważ oryginalne pytanie nie zapytać jak mogli prawidłowo korzystać on()z hover(), myślałem, że chciałbym poprawić wykorzystanie on()i nie uważają, że konieczne jest dodanie hover()kodu w czasie.
EDYCJA 11 GRUDNIA 2012
Niektóre nowe odpowiedzi podane poniżej szczegółowo opisują, jak .on()powinno działać, jeśli divpytanie jest wypełniane za pomocą JavaScript. Załóżmy na przykład, że wypełniasz zdarzenie divjQuery za pomocą .load():
(function ($) {
//append div to document body
$('<div class="selector">Test</div>').appendTo(document.body);
}(jQuery));
Powyższy kod .on()nie będzie obowiązywał. Zamiast tego powinieneś nieco zmodyfikować kod, tak jak poniżej:
$(document).on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
}, ".selector"); //pass the element as an argument to .on
Ten kod będzie działał dla elementu wypełnionego JavaScript po .load()zdarzeniu. Po prostu zmień argument na odpowiedni selektor.
mouseenterimouseleave, zgodnie z sugestią calebthebrewer.