2011-03-02 4 views
2

마우스를 올리면 하위 메뉴가 표시된 메뉴가 있습니다. 내 문제는 페이지가로드 될 때 마우스가 메뉴 요소 중 하나 위에 있으면 호버 이벤트가 시작된다는 것입니다. 내가 원했던 것은 초기 페이지로드시 마우스가 메뉴 요소 중 하나 위에 있으면 호버 이벤트가 발생하지 않는다는 것입니다. 마우스가 메뉴 요소 위에 있지 않으면 사용자 마우스가 메뉴 요소 위에 놓이면 일반 마우스 오버 이벤트가 발생합니다. 일체의 도움에 미리jquery : 마우스가 요소 위에있을 경우 초기 페이지에서 호버 제거

감사합니다, B

답변

0

방지 발사에서 호버 요소의 기본 동작.

$(document).ready(function() { 
    // sets a loaded class on your menu when DOM is loaded (you could also try the $(window).load event) 
    $('#menu').addClass('loaded'); 

    // add the hover event on the links of your menu only if the menu has the loaded class 
    $('#menu.loaded a').live('mouseover mouseout', function(event) { 
       if (event.type == 'mouseover') { 
        // do something on mouseover 
       } else { 
        // do something on mouseout 
       } 
      }); 
     }); 
+0

하지만 페이지가로드되고 마우스가 해당 요소 위에있을 때만 어떻게해야합니까? – bflemi3

1

, 여기에 jQuery를 사용하여 영감 하나입니다. 이벤트 응답을 지연시킬 수 있습니다. 따라서 마우스가 끝나면 즉시 이벤트가 발생하지 않습니다.

+0

이것은 원래 가지고 있던 문제입니다. 마우스가 페이지로드시 요소 위에 있지 않으면 사용자가 해당 요소 위로 마우스를 가져 가면 호버가 실행되지 않습니다. 페이지로드가 끝나면 마우스가 요소 위에 있으면 기본 숨김을 해제합니다. – bflemi3

+0

아, 죄송합니다. live()를 사용해야합니다. 그렇지 않으면 클래스가 나중에 추가되고 $ ('# menu.loaded a')가 hover 이벤트를 정의 할 때 존재하지 않습니다. 코드를 수정했습니다. – Capsule

0

사용 hoverIntent jquery plugin : Mörre 아이디어가 좋은 @

$("menuElementSelector").hover(function(e){ 
e.PreventDefault(); 
}); 
+0

원하는 결과는 호버 이벤트를 지연시키는 것이 아니라 페이지가로드 될 때 마우스가 처음 메뉴 요소 위에있는 경우 완전히 바인딩 해제하는 것입니다. – bflemi3

+0

하지만 나는 완고한 방법이라고 생각합니다. 1. 원하는 것을 달성하고 2. 마우스를 가리 키지 마십시오. –

관련 문제