2013-04-11 80 views

回答

0

看一看jQuery的方法.hover.mousein.mouseout.mouseenter,並.mouseleave

當用戶的鼠標滑過導航鏈接時,您將要做什麼是使用jQuery的.css,'.animate`等方法之一來顯示/隱藏菜單。當他們的鼠標離開導航鏈接和菜單時,你會想再次使用一個方法(可能和以前一樣)來隱藏菜單。

下面是一個例子:

$(document).ready(function() { 
    var $navLink = $("#navLink"); //for sake of ease, I will assume you have only one menu, as in the example site 
    var $subMenu = $("#subMenu"); // see the above comment 

    //global flags 
    var overLink = false; 
    var overMenu = false; 

    function checkAndHide() { 
     if (!overLink && !overMenu) { 
      $subMenu.css("display", "none"); 

      $subMenu.off("mouseleave.hide"); 
      $navLink.off("mouseleave.hide"); 

      $navLink.on("mouseenter.show", function() { 
       overLink = true; 
       displayMenu(); 
      }); 

     } 
    } 

    function displayMenu() { 
     $subMenu.css("display", "inline-block"); 

     $navLink.off("mouseenter.show"); 
     //this is where you have some major implementation decisions 
     //for sake of ease, I will simply use some global flags 

     $navLink.on("mouseleave.hide", function() { 
      overLink = false; 
      checkAndHide(); 
     }); 
     $subMenu.on("mouseleave.hide", function() { 
      overMenu = false; 
      checkAndHide(); 
     }); 
    }; 

    $subMenu.on("mouseenter.updateFlag", function() { 
     overMenu = true; 
    }); 

    $navLink.on("mouseenter.updateFlag", function() { 
     overLink = true; 
    }); 

}); 

以上是可能的解決方案的一個非常,非常粗糙的草案。這不是你應該簡單地複製和粘貼的東西,但它應該讓你知道你應該嘗試做什麼。我也使用了很多.on.off調用,因爲您應該這麼做,以便節省您不再需要的調用處理程序的開銷。然而,最重要的是打開或關閉$navLink.mouseenter處理程序,因爲您可能決定使用(或將來更改爲)可能在元素上可見地重複的效果(如滑動,然後再次滑下)。在我的例子中,這不是很重要,但它可能是基於你的實現。

祝你好運! :)

+0

你能幫我一個例子嗎?非常感謝你。 – 2013-04-11 15:11:38