jQuery-сохранять слайдер DIV видимым, если навести на него указатель мыши

У меня есть ссылка (BTN-SLIDE), которая при нажатии (а не при наведении курсора) скользит вниз по другому DIV (называемому PANEL), что-то вроде выпадающего меню.

Я хочу убедиться, что раскрывающийся DIV исчезает, когда: а) мышь покидает ссылку б) мышь покидает раскрывающийся DIV

Но я также хочу, чтобы выпадающий DIV оставался видимым, пока над ним находится мышь.

Это код, который у меня есть. Проблема в том, что когда я нажимаю, чтобы открыть раскрывающийся список DIV (#panel) и оставляю ссылку (.btn-slide), не наводя указатель мыши на #panel, то #panel никогда не закрывается.

С другой стороны, если я настрою #panel на закрытие при перемещении мыши по ссылке, то #panel закроется, даже если я наведу на нее указатель мыши.

Любое решение? Спасибо!

<a class="btn-slide" href="#”>Click here to open Panel</a>    
<div id="panel"><p>ahsjdhkashdkasjhd</p></div>

$(".btn-slide").click(function(){
  $("#panel").slideDown(500);
});

     $("#panel").mouseleave(function(){
        $("#panel").slideUp(500);
});

person Nicolò Canal    schedule 23.02.2012    source источник


Ответы (1)


Вы можете обернуть оба элемента в родительский элемент и получить от него триггер mouseleave. http://jsfiddle.net/UCrQF/

person Justice Erolin    schedule 23.02.2012
comment
Как я мог не думать об этом? Большое спасибо! - person Nicolò Canal; 23.02.2012
comment
Без проблем. Если это правильно отвечает на ваш вопрос, отметьте его как отвеченный. Спасибо! - person Justice Erolin; 23.02.2012
comment
Еще один вопрос: если моя ссылка представляет собой маленькую иконку 20x20, а #panel div представляет собой поле размером 300x300 прямо под значком, то ваш метод не будет работать, если у меня есть более одного раскрывающегося списка один рядом с другим - person Nicolò Canal; 23.02.2012
comment
Точнее, это не сработает, так как ширина раскрывающегося списка будет 300 пикселей, поэтому область наведения будет больше, чем сама иконка, которая составляет всего 20 пикселей. - person Nicolò Canal; 23.02.2012
comment
Хм... вы можете использовать JSFiddle для демонстрации? Разметка/CSS будет играть огромную роль в том, как мы будем это отлаживать. - person Justice Erolin; 23.02.2012
comment
Просто изображение, чтобы показать, что я имею в виду. Синяя точка — это значок ссылки на слайд, а #panel — поле под ним. Красный бант — это обертка. Поэтому я оставляю значок, перемещая мышь слева, тогда он по-прежнему будет зависать над оберткой imageshack.us/photo/my-images/830/asdcvio.png - person Nicolò Canal; 23.02.2012
comment
Вот что я имею в виду: jsfiddle.net/UCrQF/2 Как видите, ссылка просто маленький значок (я использовал для его обозначения ноль), тогда обертка будет иметь ту же ширину, что и #panel. Так что если я выйду из нуля справа, то коробка все равно будет там! - person Nicolò Canal; 23.02.2012