Когда следует выбирать функции mouseover() и hover()?

В чем разница между функциями jQuery .mouseover() и .hover()? Если они абсолютно одинаковы, почему jQuery использует оба?

Ответ 1

Из официальной документации jQuery

  • .mouseover()
    Привязать обработчик события к событию JavaScript "mouseover" или триггеру это событие на элементе.

  • .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) 

Ответ 2

.hover() функция принимает два аргумента функции: один для события mouseenter и один для события mouseleave.

Ответ 3

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

Короче говоря, вы заметите, что событие мыши над событием происходит над элементом, когда вы над ним - исходя из его родительского элемента родительского ИЛИ, но событие ввода мыши происходит только тогда, когда мышь перемещается из родительского элемента в элемент.

Ответ 4

Из официальных документов: (http://api.jquery.com/hover/)

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

Ответ 5

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

Событие JavaScript-указателя является собственностью Internet Explorer. Из-за общей утилиты события jQuery имитирует это событие, поэтому что он может использоваться независимо от браузера. Это событие отправляется когда указатель мыши входит в элемент. Любой элемент HTML может получить это событие.