Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Объясните пожалуйста путь события


Автор: kaa 3.8.2007, 15:21
Задался цель обрабатывать событие mouseover ТОЛЬКО после того как его обработает целевой элемент.

Сделал приблизительно так:

Код

$('*[@foo-parent="1"]').mouseover(MenuOver);
$(document).mouseover(BubblingMouseOver);

function MenuOver(evt)
{
    if(window.event)
    {
        var thisEvent = event;
    }
    else
    {
        var thisEvent = evt;
    }
        
        alert("ok");
    
}

function BubblingMouseOver(evt)
{
    if(window.event)
    {
        var thisEvent = event;
    }
    else
    {
        var thisEvent = evt;
    }
    
    //Определяем фазу
    if(thisEvent.eventPhase==1)
        alert(thisEvent.eventPhase);
    if(thisEvent.eventPhase==3)
        alert(thisEvent.eventPhase);
}



Почитал документацию на w3.org по событиям. Как я понял с моим кривым англицким, событие сначала опускается к целевому элементу, а потом поднимается (bubbling). Только у меня что-то не срабатывает:

не наступает фаза capturing события(eventPhase=1), это фаза, как я понял, наступает когда событие начинает опускаться к целевому элементу. Притом что обработчик целевого елемента и обработчик фазы 3(bubbling) объекта document срабатывают в обратном порядке.  smile 

Конечно, оно мне сейчас и ненадо, но боюсь пригодится еще, вот и хочется понять что же здесь не так.

Автор: dXdYdZ 7.8.2007, 02:13
Попробуйте вставить Ваш целевой элемент в другой элемент, например Span. Назначьте обработчик события Span - у. Тогда, по идее, Ваш обработчик, например, щелчка будет вызван после обработчика целевого элемента. А вообще о перехвате событий можно прочитать http://starcat.dp.ua/doc/wdh/dhtml11.htm#ref41112

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)