В чем разница между событиями mouseover и mouseenter?

Существует один ужасный взлом с участием Marshal.GetExceptionPointers и Marshal.GetExceptionCode , который не работает на всех платформах:

public static Boolean IsInException()
{
   return Marshal.GetExceptionPointers() != IntPtr.Zero ||
          Marshal.GetExceptionCode() != 0;
}

С этой страницы: http://www.codewrecks.com/blog/index.php/2008/07/25/detecting-if-finally-block-is-executing-for-an-manhandled-exception /

145
задан informatik01 12 September 2018 в 14:26
поделиться

3 ответа

Вы можете попробовать следующий пример со страницы на странице jQuery doc . Это небольшая симпатичная интерактивная демонстрация, которая проясняет ситуацию, и вы действительно можете убедиться в этом сами.

 var i = 0; $ ("div.overout") .mouseover (function () {i + = 1; $ (this) .find ("span"). text ("mouse over x" + i);}) .mouseout (function ( ) {$ (this) .find ("span"). text ("mouse out");}); var n = 0; $ ("div.enterleave") .mouseenter (function () {n + = 1; $ (this) .find ("span"). text ("mouse enter x" + n);}) .mouseleave (function ( ) {$ (this) .find ("span"). text ("mouse leave");}); 
 div.out {width: 40%; высота: 120 пикселей; маржа: 0 15px; цвет фона: # d6edfc; плыть налево; } div.in {ширина: 60%; высота: 60%; цвет фона: # fc0; маржа: 10 пикселей автоматически; } p {высота строки: 1em; маржа: 0; отступ: 0; } 
  
< span> переместите указатель мыши
переместите указатель мыши

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

Или , как сказано в mouseover () docs :

[ .mouseover () ] может вызвать множество головных болей из-за всплытия событий. Например, когда указатель мыши перемещается по внутреннему элементу в этом примере, событие наведения курсора мыши будет отправлено на него, а затем просочится во внешний. Это может вызвать наш связанный обработчик наведения указателя мыши в неподходящее время. См. Обсуждение .mouseenter () для полезной альтернативы.

115
ответ дан 23 November 2019 в 22:32
поделиться

Как это часто бывает с подобными вопросами, Quirksmode дает лучший ответ .

Я предполагаю, что, поскольку одна из целей jQuery - сделать вещи независимыми от браузера , что использование любого имени события вызовет одинаковое поведение. Изменить: благодаря другим сообщениям, теперь я вижу, что это не так

4
ответ дан 23 November 2019 в 22:32
поделиться

Mouseenter и mouseleave не реагируют на всплытие событий, а mouseover и mouseout - .

Вот статья , описывающий поведение.

42
ответ дан 23 November 2019 в 22:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: