2012-03-02 4 views
0

이미지에 이벤트 핸들러 함수 (예 : onmouseover 핸들러)가 연결되어 있습니다. onmouseover 이벤트가 특정 요소에 의해 시작된 경우이 처리기를 실행하지 않으려합니다.이벤트 핸들러 함수에서 다른 이벤트가 발생했는지 확인하십시오.

더 구체적으로 말하자면, 나는 떠 다니는 이미지가 있고, 메뉴가 튀어 나옵니다. 이미지에 인접한 메뉴로 마우스를 이동하지 않으면 마우스가 해당 이미지 밖으로 이동하면 해당 메뉴를 닫고 싶습니다.

은 그래서 의사 코드 그래서 내가 확인할 수있는 방법을

img.mouseout = function() { 
if (otherelement.onmouseover.fired) { 
leave the menu as it is 
} 
else 
{ 
close the menu 
} 

에서이 같은 다른 이벤트가 을 발사했다

여부?

+0

당신은 그것을 자신을 추적 할 수있는 것, 그리고 당신이 이벤트 핸들러가 호출되는 순서에 걸쳐있는 얇은 제어에 의해 복잡하게 될 것이다. – Pointy

답변

0

다른 처리기에서이를 지우는 timeout 및 mouseover 처리기를 추가합니다. 요소가 시각적으로 서로 정확하게 나란히있을 수 있지만, 작은 타이머를 추가하는 것은 mouseout 이벤트가 발생하는 작은 1 픽셀 영역이 될 수 있기 때문에 더 안전합니다. 이렇게하면 추한 깜박임이 발생합니다.

이렇게하면 깜박임없이 빠른 mouseshake가 가능합니다. 같은

뭔가 :

var timer; 

img.onmouseout = other.onmouseout = function() { 
    timer = setTimeout(closemenu, 100); 
} 

img.onmouseover = other.onmouseover = function() { 
    clearTimeout(timer); 
} 

function closemenu() { 
    // close it 
} 
관련 문제