Jquery - Hover не запускался (нижний / правый вопрос) - PullRequest
0 голосов
/ 07 апреля 2011

У меня проблема с функцией наведения.

HTML

<div id="test" style="border:1px solid #ff0000; position:absolute; right:0px; bottom:0px; height:20px; width:100px;" ></div>

JQUERY

$('#test').hover( function ()
    {
        $('#outp').append('enter <br />');  
    }, function ()
    {
        $('#outp').append('leave <br />');   
    });

Демо
http://jsfiddle.net/ky5fW/8/

Когда вы вводите (или оставляете) div test на нижней стороне, jquery не распознает его. Но почему?

Надеюсь, кто-нибудь может мне помочь.
Заранее спасибо!
Питер

РЕДАКТИРОВАТЬ:
Странно, это работает с живой функцией, но почему?
http://jsfiddle.net/ky5fW/11/

 $('#test').live('hover', function (event)
   {
       if (event.type == 'mouseenter')
       {
          $('#outp').append('enter 2 <br />');
       }
       if (event.type == 'mouseleave')
       {
          $('#outp').append('leave 2 <br />');
       } });

Ответы [ 2 ]

3 голосов
/ 07 апреля 2011

Если курсор покидает элемент через хром окна (снизу или справа), событие отпускания мыши не будет запущено. Это нормально.

Обновление

Странно, работает с живой функцией, но почему?

Вероятно, потому что live() не прикрепляет события напрямую, а захватывает события, всплывающие из DOM, и проверяет event.target, чтобы увидеть, какой элемент вызвал событие изначально.

0 голосов
/ 07 апреля 2011

Единственный обходной путь - поместить элемент непосредственно в пределах окна, чтобы можно было зафиксировать движения мыши, прежде чем он попадет в элемент с событием hover.

#test {
    border: 1px solid #ff0000; 
    position: absolute; 
    right: 2px; 
    bottom: 2px; 
    height: 20px; 
    width: 100px;
}

...

<div id="test"></div>
...