В чем разница между функциями jQuery .mouseover()
и .hover()
? Если они абсолютно одинаковы, почему jQuery использует оба?
Когда следует выбирать функции mouseover() и hover()?
Ответ 1
Из официальной документации jQuery
.mouseover()
Привязать обработчик события к событию JavaScript "mouseover" или триггеру это событие на элементе.
.hover()
Привязать один или два обработчика к соответствующим элементам, которые будут выполнены, когда указатель мыши входит и покидает элементы.Вызов
$(selector).hover(handlerIn, handlerOut)
является сокращением для:$(selector).mouseenter(handlerIn).mouseleave(handlerOut);
-
Привязать обработчик событий, который будет запущен, когда мышь входит в элемент, или вызвать этот обработчик на элементе.
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 может получить это событие.