( Sehen Sie sich die letzte Änderung in dieser Antwort an, wenn Sie die .on()
mit Elementen, die mit JavaScript gefüllt sind )
Verwenden Sie dies für Elemente, die nicht mit JavaScript ausgefüllt werden:
$(".selector").on("mouseover", function () {
//stuff to do on mouseover
});
.hover()
hat seinen eigenen Handler: http://api.jquery.com/hover/
Wenn Sie mehrere Dinge tun wollen, verketten Sie sie in der .on()
Handler wie folgt:
$(".selector").on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
});
Entsprechend den nachstehenden Antworten können Sie Folgendes verwenden hover
mit .on()
, sondern:
Obwohl bei neuem Code dringend davon abgeraten wird, können Sie die Pseudo-Ereignis-Name "hover" als Abkürzung für die Zeichenfolge "Maus eingeben Maus verlassen". Es wird ein einziger Event-Handler für diese zwei Ereignisse an, und der Handler muss event.type untersuchen, um festzustellen um festzustellen, ob das Ereignis "mouseenter" oder "mouseleave" ist. Verwechseln Sie nicht das Pseudo-Ereignisnamen "hover" nicht mit der Methode .hover(), die eine oder zwei Funktionen akzeptiert.
Außerdem gibt es keine Leistungsvorteile, und es ist sperriger als die Verwendung von mouseenter
または mouseleave
. Die Antwort, die ich gegeben habe, erfordert weniger Code und ist der richtige Weg, um etwas wie dies zu erreichen.
EDIT
Es ist schon eine Weile her, dass diese Frage beantwortet wurde, und es scheint, als hätte sie an Boden gewonnen. Der obige Code steht immer noch, aber ich wollte etwas zu meiner ursprünglichen Antwort hinzufügen.
Ich bevorzuge zwar die Verwendung von mouseenter
と mouseleave
(hilft mir zu verstehen, was im Code vor sich geht) mit .on()
ist es genau dasselbe, als wenn Sie folgendes mit hover()
$(".selector").hover(function () {
//stuff to do on mouse enter
},
function () {
//stuff to do on mouse leave
});
Da in der ursprünglichen Frage gefragt wurde, wie sie die on()
mit hover()
dachte ich, ich würde die Verwendung von on()
und hielt es nicht für notwendig, die hover()
Code zu dieser Zeit.
BEARBEITEN 11. DEZEMBER 2012
Nachfolgend einige neue Antworten, die erläutern, wie .on()
sollte funktionieren, wenn die div
wird mit JavaScript ausgefüllt. Nehmen wir zum Beispiel an, Sie füllen eine div
mit jQuery's .load()
Ereignis, etwa so:
(function ($) {
//append div to document body
$('<div class="selector">Test</div>').appendTo(document.body);
}(jQuery));
Der obige Code für .on()
nicht standhalten würde. Stattdessen sollten Sie Ihren Code leicht abändern, etwa so:
$(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
Dieser Code funktioniert für ein Element, das mit JavaScript nach einer .load()
Ereignis stattgefunden hat. Ändern Sie einfach Ihr Argument in den entsprechenden Selektor.