( Подивіться останню редакцію в цій відповіді, якщо вам потрібно використовувати .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. Я запропонував відповідь, вимагає менше коду, і це правильний спосіб досягти чогось подібного.
EDIT
Минув час, коли відповіли на це запитання, і, схоже, воно набуло певної тяги. Наведений вище код все ще стоїть, але я хотів щось додати до своєї оригінальної відповіді.
Хоча я віддаю перевагу використанню 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. Наприклад, скажімо, що ви заповнюєте подію divjQuery .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.