загвоздка с версткой одного блока (нужна помощ гуру)!

Brutus
На сайте с 06.10.2005
Offline
273
396

В общем есть блок новостей

смотреть тут: http://dj.mmorpg.su

задача: чтобы при наведении мышки на любой пункт новости он всплывал бы во внешнем слое (щас работает в принципе так что понять что можно)

Но загвоздка в том, что слой не сохраняется если мышку вести по заголовку новости или вообще исчезает и далее не появляется.

Может кто предложить варианты решения проблемы?

NetSky
На сайте с 05.04.2008
Offline
104
#1

на первый взгляд ошибок в исполнении jquery нет.. через дебагер всё хорощо отробатывается ... надо в скрипте покапать

Адаптация верстки сайта под мобильные устройства. .Скорая помощь для ваших сайтов- Wordpress, DLE, Joomla, Drupal
[Удален]
#2

При наведении мышки на любой тег внутри данного, на нем срабатывает mouseout и он закрывается - учите DOM. Так что надо писать обработчик наведения более грамотно

neolord добавил 25.09.2009 в 02:42

собсно лечится это довольно хитро

в событии onmouseout надо проверять event.relatedTarget || event.exсplicitTarget (второе для старых IE) - это ссылка на элемент, на который ушел курсор. если этот элемент является потомком того, к которому привязано событие, то вызывать hide не надо.

Я не сильно знаю jQuery чтобы подсказать вам как это делается простым способом.

В Prototype это как то так


Event.observe(element,'mouseout',function(ev)
{
var t=ev.explicitTarget || ev.relatedTarget;
if (t.descendantOf(element)) return;
//здесь действие, которое делается по задумке
}

Примерно то же самое надо делать с маусовер.

События в яваскрипте передаются от потомков к родителям и от родителей к потомкам. Первое называется bubbling - пузырек, а второе capture - захват. Второе еще можно отменить, особенно используя всякие фреймворки это совсем просто. А вот bubbling отслеживается только вручную

Картина примерно такая:

<div id='outer'><div id='inner'></div><div>

Когда курсор входит снаружи в #outer, на #outer срабатывает onmouseover

Когда курсор выходит наружу, на #outer срабатывает onmouseout

А вот когда курсор уходит с территории #outer на территорию #inner, срабатывают сразу два события - onmouseout на #outer и onmouseover на #inner, причем второе событие по принципу пузырька передается всем родительским, т.е. и #outer в том числе.

Поэтому для подобных вещей лучше не задрачиваться с яваскриптом, а использовать например :hover

Он себя корректно ведет при перемещении мыши по дочерним потомкам. Анимация в данном случае к тому же не столь оправдана

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий