LINUX.ORG.RU

[html] Срабатывание onmouseout

 


0

1

Допустим есть div, на котором находится гиперсылка. Почему то при наведении мыши на ссылку срабатывает onmouseout для div:

<div onmouseout="alert('тык');"><a href="#">123</a></div>
как этого избежать?


Можно поставить обработчик onmouseout для ссылки и поставить после него «return false», чтобы заблокировать продвижение события вверх по иерархии объектов на странице.

Terrens
()
Ответ на: комментарий от Terrens

что-то не работает <div onmouseout=«alert('тык');»><a onmouseout=«return false;» onmouseover=«return false;» href=«#»>123</a></div>

ir0
() автор топика
Ответ на: комментарий от ir0

тебе короче надо mouseenter. return false отменяет дефолтное действие которое для ссылки это переход по ней. тебе нужно делать stopPropagation() чтобы событие с ссылки не всплывало выше.

bga_ ★★★★
()

Так все правильно срабатывает, ты же область div покидаешь (небось контекстное меню реализовываешь)ю

Мне пока что эту проблему удалось решить примерно через следующий разврат

======================= HTML ===============================
<div onmouseout="return onmouse_handler(event, obj)"><a href="">ляля</a></div>

======================= JS ===============================

    var mousex;
    var mousey;

    function mouse_coord(event){
        if (document.attachEvent != null) { // Internet Explorer & Opera
                mousex = window.event.clientX +
                    document.documentElement.scrollLeft +
                    document.body.scrollLeft;
                mousey = window.event.clientY +
                    document.documentElement.scrollTop +
                    document.body.scrollTop;
        }
        if (!document.attachEvent && document.addEventListener) { // Gecko
                mousex = event.clientX + window.scrollX;
                mousey = event.clientY + window.scrollY;
        }

    }


function onmouse_handler(event, obj){
    mouse_coord(event); // Определяем координаты мыши
    // Получаем объект под курсором
    var parenter = document.elementFromPoint(mousex, mousey).parentNode;
    // Проверяем является ли объект, на который ушла мышь дочерним от заданного
    if(parenter==obj){
       return false; // Переместились на дочерний элемент дива, событие не отрабатываем
    }
    alert('блаблабла');
}
    

r_asian ★☆☆
()

Срочно читать маны про event bubbling.

Deleted
()

> Допустим есть div, на котором находится гиперсылка. Почему то при наведении мыши на ссылку срабатывает onmouseout для div:

тоесть как понимаю весь вопрос в том — что использовать:

my_element.addeventlistener('click', my_handler, false)

или же

my_element.addeventlistener('click', my_handler, true)

???

user_id_68054 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.