( Посмотрите на последнее изменение в этом ответе, если вам нужно использовать .on()элементы, заполненные JavaScript )
Используйте это для элементов, которые не заполнены с использованием JavaScript:
$(".selector").on("mouseover", function () {
//stuff to do on mouseover
});
.hover()имеет свой собственный обработчик: http://api.jquery.com/hover/
Если вы хотите сделать несколько вещей, объедините их в .on()обработчике так:
$(".selector").on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
});
В соответствии с ответами, приведенными ниже, вы можете использовать hoverс .on(), но:
Несмотря на то, что новый код настоятельно не рекомендуется, вы можете увидеть псевдо-событие-имя "hover", используемое как сокращение для строки "mouseenter mouseleave". Он присоединяет один обработчик событий к этим двум событиям, и обработчик должен изучить event.type, чтобы определить, является ли событие mouseenter или mouseleave. Не путайте псевдо-имя-события hover с методом .hover (), который принимает одну или две функции.
Кроме того, нет никаких преимуществ с точки зрения производительности, и это более громоздко, чем просто использование mouseenterили mouseleave. Ответ, который я предоставил, требует меньше кода и является правильным способом достижения чего-то подобного.
РЕДАКТИРОВАТЬ
Прошло много времени с тех пор, как на этот вопрос был дан ответ, и, похоже, он набрал обороты. Приведенный выше код остается в силе, но я хотел бы добавить что-то к своему первоначальному ответу.
Хотя я предпочитаю использовать mouseenterи mouseleave(помогает мне понять, что происходит в коде) с .on()ним все равно, что написать следующее сhover()
$(".selector").hover(function () {
//stuff to do on mouse enter
},
function () {
//stuff to do on mouse leave
});
Так как в первоначальном вопросе спрашивалось, как они могут правильно работать on()с ними hover(), я подумал, что исправлю использование, on()и не счел необходимым добавлять hover()код в то время.
РЕДАКТИРОВАТЬ 11 ДЕКАБРЯ 2012 ГОДА
Некоторые новые ответы, представленные ниже, подробно описывают, как .on()должно работать, если рассматриваемый divвопрос заполнен с использованием JavaScript. Например, допустим, вы заполняете событие с divиспользованием jQuery .load(), например так:
(function ($) {
//append div to document body
$('<div class="selector">Test</div>').appendTo(document.body);
}(jQuery));
Код выше .on()не будет стоять. Вместо этого вы должны немного изменить свой код, например так:
$(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
Этот код будет работать для элемента, заполненного JavaScript после .load()события. Просто измените свой аргумент на соответствующий селектор.
mouseenterиmouseleave, как предложено calebthebrewer.