2012-01-13 5 views
0

나는 훌륭한되었습니다 모두 유사한 주제에 대한 게시물의 수를 읽고 내가 그들을 그러나 나는 아직도 만족스럽게 내 코드가 작동 할 수 없습니다 읽고 많은 것을 배웠 때 onmouseout 방지 할 수 있습니다.자바 스크립트 - 아이가 만든 마우스 오버 아이 동적

버튼 수가 많은 메뉴 막대가 있습니다. 내가 mouseover 3 이러한 몇 가지 자바 스크립트 동적으로 각 단추에 대한 드롭 다운 메뉴를 만듭니다.

마우스를 단추 밖으로 드래그하거나 메뉴 모음 밖으로 완전히 놓으면 드롭 다운이 지워집니다.

분명히 내가 드롭 다운에 마우스를 올렸을 때 나는이 드롭 다운을 지우고 싶지 않습니다.

물론 onmouseout 이벤트는이 메뉴를 실행하고 지 웁니다.

비슷한 문제에 사용되는 다양한 접근법을 볼 수 있습니다. 그러나 이들 중 어느 것도 작동하지 않으며 div와 dl이 청취자가 부모에게 할당되었을 때 분명히 나타나지 않는 곳에서 생성된다는 사실 때문에 발생한다고 생각합니다. 그래서 DOM에 추가 된 html은 리스너의 범위 내에서 드롭 다운을 표시하지만 mouseout 이벤트가 발생했다고 가정합니다.

나는 성공적으로 추가 된 동적 콘텐츠에 대한 리스너를 추가하여 해결하려고 노력하지만, 난 여전히 앞서 마우스 오버의 발사에서로 마우스를 막을 수 없습니다.

답변

0

타이머를 설정하고 생성 된 메뉴를 마우스로 가리킬 때 선택을 취소하십시오.

document.getElementById("menu").onmouseout = function(e){ 
    window.to = setTimeout(function(){ 
     // remove the submenu 
    },20) 
} 

document.getElementById("submenu").onmouseover = function(e){ 
    clearInterval(window.to) 
} 
+0

안녕하세요, 저는 이미 setTimeout을 적용 해 보았습니다. mainmenu 버튼에서 mouseout으로 설정하고 메뉴를 지우기 전에 테스트 된 dropDownFocus 플래그를 설정합니다. – codepuppy

+0

은'window.to = window.setTimeout (...')이어야합니다. 어쨌든 저에게는 효과가있었습니다. – tjb1982