Коли вибрати функцію миші () та наведення курсора ()?


112

Які відмінності між jQuery .mouseover()та .hover()функціями? Якщо вони абсолютно однакові, чому jQuery використовує обидва?


4
Це не повторне питання. Ваша надана посилання має події миші та миші, але моє - це події миші та наведення курсору.
Бходжендра Рауніяр

1
вони відрізняються тим же, що і мишею над мишею, і прийнята відповідь нижче не є точною ... функція наведення курсору додає події миші та миші, а не події миші та миші
Arun P Johny,

1
дивіться jsfiddle.net/arunpjohny/cZb5b/1 переміщення миші з elелемента на childта перевірте консоль
Arun P Johny

@ArunPJohny, будь ласка, перечитайте, це означає, що mouseenter та mouseleave, а не миші та миші.
Бходжендра Рауніяр

1
також за допомогою наведення курсору - jsfiddle.net/arunpjohny/cZb5b/2, якщо ви можете проаналізувати консоль, ви можете знайти різницю ...
Arun P Johny,

Відповіді:


113

З офіційної документації jQuery

  • .mouseover()
    Прив’яжіть обробник подій до події JavaScript "миші" або запустити цю подію на елементі.

  • .hover() Прив’яжіть один або два обробники до відповідних елементів, які потрібно виконати, коли вказівник миші входить і залишає елементи.

    Виклик $(selector).hover(handlerIn, handlerOut)є скороченим для: $(selector).mouseenter(handlerIn).mouseleave(handlerOut);


  • .mouseenter()

    Прив’яжіть обробник подій, який буде запущений, коли миша вводить елемент або запускає цей обробник на елемент.

    mouseoverспрацьовує, коли вказівник також переміщується в дочірній елемент, тоді як він mouseenterспрацьовує лише тоді, коли вказівник переміщується у пов'язаний елемент.


Що це означає

З - за цього, .mouseover()це НЕ те ж саме , як .hover(), з тієї ж причини , .mouseover()це НЕ те ж саме .mouseenter().

$('selector').mouseover(over_function) // may fire multiple times

// enter and exit functions only called once per element per entry and exit
$('selector').hover(enter_function, exit_function) 

31

.hover()функція приймає два аргументи функції, один для mouseenterподії та один для mouseleaveподії.


це чудовий момент з точки зору відмінностей між двома функціями, згаданими в заголовку питання, Дякую! перегляньте посилання нижче на w3schools про те, як працює .hover (): w3schools.com/jquery/event_hover.asp
Bahman.A

8

Ви можете спробувати його http://api.jquery.com/mouseover/ на сторінці документа jQuery. Це хороша маленька, інтерактивна демонстрація, яка робить це дуже зрозумілим, і ви насправді можете самі переконатися.

Коротше кажучи, ви помітите, що подія миші над елементом відбувається на елементі, коли ви перебуваєте над ним - надходить або від його дочірнього, або батьківського елемента, але подія введення миші відбувається лише тоді, коли миша переходить від батьківського елемента до елемента.


1

З офіційних документів: ( http://api.jquery.com/hover/ )

Метод .hover () пов'язує обробники як для подій миші, так і для миші. Ви можете використовувати його, щоб просто застосувати поведінку до елемента в той час, коли миша знаходиться в межах елемента.


1

Як ви можете прочитати на http://api.jquery.com/mouseenter/

Подія JavaScript mouseenter є власником Internet Explorer. Через загальну корисність події, jQuery моделює цю подію, щоб її можна було використовувати незалежно від браузера. Ця подія надсилається елементу, коли вказівник миші вводить елемент. Будь-який елемент HTML може отримати цю подію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.