2012-08-01 3 views
0

요약 체류하지/문제점 : 하위 메뉴를 표시하기 위해 jQuery를하고 hoverIntent를 사용하는 메뉴 시스템에서 링크 위로 가져 가면 후hoverIntent jQuery를 하위 메뉴가 열려

, 하위 메뉴에 마우스 포인터를 이동하는 경우, 하위 메뉴 즉시 닫힙니다.

Example on JSfiddle

세부

는 내가 jQuery를 hoverIntent 플러그인에 문제가 있었어요. 하위 메뉴가 포함 된 탐색 메뉴가 있습니다. 이 하위 메뉴는 사용자가 지정된 최상위 링크를 가리키면 열립니다. 여기에 HTML은 다음과 같습니다

<ul id="Menu"> 
    <li><a href="/">Home</a></li> 
    <li><a href="news/">News</a></li> 
     <li class="hassublinks"><a href="software.php">Software & Apps</a> 
      <ul> 
       <li><a href="windows.php">Windows</a></li> 
       <li><a href="mac.php">Mac</a></li> 
       <li><a href="ios.php">iOS</a></li> 
       <li><a href="android.php">Android</a></li> 
      </ul> 
     </li> 
    <li><a href="feedback.php">Feedback</a></li> 
    <li><a href="about.php">About</a></li> 
</ul> 
기본적으로

<ul> ID로 "메뉴"내의 각 <li> 웹 사이트의 페이지에 대한 링크를 가지고 있으며, <li>'s 하나 더 링크가있는 하위 메뉴 (다른 <ul>)가 포함되어 있습니다. 그 하위 메뉴가있는 <li>에는 "hassublinks"클래스가 주어지며, 기본 소프트웨어 & Apps 페이지에 링크하기 위해 여전히 <a> 태그가 있습니다. 하지만 하위 메뉴가 포함되어 있기 때문에 jQuery와 hoverIntent를 사용하여 소프트웨어 & Apps <li> 위로 마우스를 가져 가면 보조 메뉴 <ul>이 표시됩니다.

$(function($) { 

    function showMenu(){ 
     $('#Menu ul').slideDown(500, "swing"); 
    } 
    function hideMenu(){ 
     $('#Menu ul').slideUp(500, "swing"); 
    } 

    $('#Menu > li.hassublinks > a').hoverIntent({ 
     over: showMenu, 
     timeout: 400, 
     out: hideMenu 
    }); 
}); 
최상위 sublinks을 가지고 <li><a> 태그를 가리킬 때, 하위 메뉴가 표시되도록이 코드는 단순히하게

후 사라 마우스 포인터 잎 : 여기에 코드입니다 . 그러나 에는 하나의 주요한 문제가 있습니다. 처음 <li>이 표시된 후 하위 메뉴가 표시되고 마우스 포인터가 해당 하위 메뉴로 이동하거나 하위 메뉴의 <li>으로 이동하면 하위 메뉴가 숨겨집니다. 분명히, 이것은 일어나지 않아야합니다. jsfiddle에서 demo을 만들었습니다. 이 문제를 해결할 방법이 있습니까? 이전에 하위 메뉴에 대해 CSS3 전환을 사용했지만 요소의 높이를 0px (닫힌 높이)에서 값 "auto"(열린 높이)로 쉽게 전환 할 수 없다는 것을 알았을 때 jQuery로 전환했습니다. 이제 jQuery를 사용하면 하위 메뉴를 전체 높이로 쉽게 전환 할 수 있으므로 더 이상 문제가되지 않지만 지금은이 문제가 있으며 해결 방법을 찾을 수 없습니다. 하위 메뉴를 열었을 때 열어 둘 수있는 방법이 있습니까?

나는 비슷한 질문을 검색하고 몇 가지를 발견했지만이를 읽은 후 나는 그들이 <div's>하지 <ul>'s, <li>'s<a>'s 등을 포함 것을보고 한 나는 그를 사용하도록 변경하여 그 질문에 대한 답변을 테스트 할 때 태그가 올바르게 작동하지 않았습니다.

답변

4

$(function($) { 

function showMenu() { 
    $('#Menu ul').slideDown(500, "swing"); 
} 

function hideMenu() { 
    $('#Menu ul').slideUp(500, "swing"); 
} 
    $("li.hassublinks").hoverIntent({ 
     over: showMenu, 
     timeout: 400, 
     out: hideMenu 
    }); 

}); 
시도
관련 문제