2016-12-14 130 views
0

我這裏有一個小問題,保持子菜單顯示,同時鼠標懸停

我有一個菜單,我想,以顯示與類.submenuWrap一個div裏面的子菜單。如果菜單項具有子菜單,則它將在此.submenuWrap中顯示子菜單,如果菜單項沒有子菜單,那麼.submenuWrap根本不會顯示。

我不能解決的方法是在我移動子菜單時保持這個.submenuWrap顯示,就在此刻,只要我離開導航,它就會消失。

我把一切都放在一個的jsfiddle,因爲它是更容易跟蹤:

HTML

<nav id="mainNav" role="navigation"> 
    <div class="container"> 
    <div id="mainMenu" class="collapse navbar-collapse"> 
     <ul class="nav"> 
     <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Buy Wine</a> 
      <div class="dropdown-menu"> 
      <div class="col-sm-3 col-xs-12"> 
       <dl> 
       <dt><a href="#">By Country</a></dt> 
       <dd><a href="#" data-abbr="ar">Argentina</a></dd> 
       <dd><a href="#" data-abbr="au">Australia</a></dd> 
       <dd><a href="#" data-abbr="it">Italy</a></dd> 
       <dd><a href="#" data-abbr="fr">France</a></dd> 
       <dd><a href="#" data-abbr="es">Spain</a></dd> 
       <dd><a href="#" data-abbr="gb">United Kingdom</a></dd> 
       </dl> 
      </div> 
      <div class="col-sm-3 col-xs-12"> 
       <dl> 
       <dt><a href="#">By Type</a></dt> 
       <dd><a href="#">Red</a></dd> 
       <dd><a href="#">White</a></dd> 
       <dd><a href="#">Rose</a></dd> 
       <dd><a href="#">Sparkling</a></dd> 
       <dd><a href="#">Port</a></dd> 
       </dl> 
      </div> 
      <div class="col-sm-3 col-xs-12"> 
       <dl> 
       <dt><a href="#">By Something</a></dt> 
       <dd><a href="#">Red</a></dd> 
       <dd><a href="#">White</a></dd> 
       <dd><a href="#">Rose</a></dd> 
       <dd><a href="#">Sparkling</a></dd> 
       <dd><a href="#">Port</a></dd> 
       </dl> 
      </div> 
      <div class="col-sm-3 col-xs-12"> 
       <dl> 
       <dt><a href="#">By Price</a></dt> 
       <dd><a href="#">£0 - £50</a></dd> 
       <dd><a href="#">£50 - £100</a></dd> 
       <dd><a href="#">£100 - £200</a></dd> 
       <dd><a href="#">£200 - £500</a></dd> 
       <dd><a href="#">£500+</a></dd> 
       </dl> 
      </div> 
      </div> 
     </li> 
     <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">en primeur</a> 
      <div class="dropdown-menu"> 
      <div class="col-sm-6 col-xs-12"> 
       <dl> 
       <dt><a href="#">PIRULO</a></dt> 
       <dd><a href="#" data-abbr="ar">Argentina</a></dd> 
       <dd><a href="#" data-abbr="au">Australia</a></dd> 
       <dd><a href="#" data-abbr="it">Italy</a></dd> 
       <dd><a href="#" data-abbr="fr">France</a></dd> 
       <dd><a href="#" data-abbr="es">Spain</a></dd> 
       <dd><a href="#" data-abbr="gb">United Kingdom</a></dd> 
       </dl> 
      </div> 
      <div class="col-sm-6 col-xs-12"> 
       <dl> 
       <dt><a href="#">PIRULA</a></dt> 
       <dd><a href="#">Red</a></dd> 
       <dd><a href="#">White</a></dd> 
       <dd><a href="#">Rose</a></dd> 
       <dd><a href="#">Sparkling</a></dd> 
       <dd><a href="#">Port</a></dd> 
       </dl> 
      </div> 
      </div> 
     </li> 
     <li><a href="#">latest offers</a></li> 
     <li><a href="#">what's new</a></li> 
     <li><a href="#">our blog</a></li> 
     <li><a href="#">services</a></li> 
     </ul> 
    </div> 
    <div class="submenuWrap"></div> 
    </div> 
</nav> 

CSS

#mainNav { 
    background-color: $white; 
    border-top: 5px solid black; 
    border-bottom: 5px solid black; 
    } 
    #mainMenu > ul { 
     display: table; 
     width: 100%; 
     margin-bottom: 0; 
    } 
    #mainMenu > ul > li { 
     display: table-cell; 
    } 
    #mainMenu > ul > li > a { 
      text-align: center; 
    } 

    .submenuWrap { 
    position: absolute; 
    background-color: khaki; 
     width: 98%; 
     border-left: 5px solid #333333; 
     border-right: 5px solid #333333; 
     background-color: $white; 
     margin: 0 auto; 
     top: 50px; 
     right: 0; 
     left: 0; 
     border-top: 0; 
     display:block; 
     z-index:6;  
    } 

JS

var submenu = $(this).next(".dropdown-menu").html(); 
$("#mainMenu .dropdown-toggle").on({ 
    mouseover: function() { 
    submenu = $(this).next(".dropdown-menu").html(); 
    }, mouseenter: function() { 
    $(".submenuWrap").html(submenu).css("border-bottom", "5px solid black"); 
    }, mouseleave: function() { 
    $(".submenuWrap").html("").css("border-bottom", "0"); 
    } 
}); 

我曾嘗試加入這個:

$(".submenuWrap").on({ 
    mouseover: function() { 
     $(this).css("display", "block"); 
    }, mouseleave: function() { 
     $(this).css("display", "none"); 
    } 
}); 

但它什麼都沒做,我也不明白爲什麼。

https://jsfiddle.net/yLpLfp9w/

有誰可以給​​我個忙嗎?

謝謝

回答

1

有一些問題與您的jsfiddle代碼,菜單HTML沒有顯示,只是一個黑色的吧,所以這裏是一個jQuery的下拉菜單可以工作在CSS技巧一個很好的例子,在這裏: https://css-tricks.com/examples/SimplejQueryDropdowns/

隨着代碼在這裏: http://css-tricks.com/examples/SimplejQueryDropdowns.zip

我將創建一個撥弄着上面的代碼在這裏:

$(function(){ 
 

 
    $("ul.dropdown li").hover(function(){ 
 
    
 
     $(this).addClass("hover"); 
 
     $('ul:first',this).css('visibility', 'visible'); 
 
    
 
    }, function(){ 
 
    
 
     $(this).removeClass("hover"); 
 
     $('ul:first',this).css('visibility', 'hidden'); 
 
    
 
    }); 
 
    
 
    $("ul.dropdown li ul li:has(ul)").find("a:first").append(" &raquo; "); 
 

 
});
* \t \t \t \t \t \t \t \t \t { margin: 0; padding: 0; } 
 
body \t \t \t \t \t \t \t \t { font: 14px Helvetica, Sans-Serif; } 
 
#page-wrap \t \t \t \t \t \t \t { width: 800px; margin: 25px auto; } 
 
a \t \t \t \t \t \t \t \t \t { text-decoration: none; } 
 
ul \t \t \t \t \t \t \t \t \t { list-style: none; } 
 
p         { margin: 15px 0; } 
 

 
/* 
 
\t LEVEL ONE 
 
*/ 
 
ul.dropdown       { position: relative; } 
 
ul.dropdown li      { font-weight: bold; float: left; zoom: 1; background: #ccc; } 
 
ul.dropdown a:hover \t \t    { color: #000; } 
 
ul.dropdown a:active    { color: #ffa500; } 
 
ul.dropdown li a     { display: block; padding: 4px 8px; border-right: 1px solid #333; 
 
\t \t \t \t \t \t \t \t \t color: #222; } 
 
ul.dropdown li:last-child a   { border-right: none; } /* Doesn't work in IE */ 
 
ul.dropdown li.hover, 
 
ul.dropdown li:hover    { background: #F3D673; color: black; position: relative; } 
 
ul.dropdown li.hover a    { color: black; } 
 

 

 
/* 
 
\t LEVEL TWO 
 
*/ 
 
ul.dropdown ul \t \t \t \t \t \t { width: 220px; visibility: hidden; position: absolute; top: 100%; left: 0; } 
 
ul.dropdown ul li \t \t \t \t \t { font-weight: normal; background: #f6f6f6; color: #000; 
 
\t \t \t \t \t \t \t \t \t border-bottom: 1px solid #ccc; float: none; } 
 
\t \t \t \t \t \t \t \t \t 
 
            /* IE 6 & 7 Needs Inline Block */ 
 
ul.dropdown ul li a \t \t \t \t \t { border-right: none; width: 100%; display: inline-block; } 
 

 
/* 
 
\t LEVEL THREE 
 
*/ 
 
ul.dropdown ul ul \t \t \t \t \t { left: 100%; top: 0; } 
 
ul.dropdown li:hover > ul \t \t \t { visibility: visible; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 

 
<head> 
 
\t <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
 
\t 
 
\t <title>Simple jQuery Dropdowns</title> 
 
\t 
 
\t <link rel="stylesheet" href="css/style.css" type="text/css" media="screen, projection"/> 
 
\t <!--[if lte IE 7]> 
 
     <link rel="stylesheet" type="text/css" href="css/ie.css" media="screen" /> 
 
    <![endif]--> 
 
\t \t \t 
 
\t <script type="text/javascript" src="js/jquery-1.3.1.min.js"></script> \t 
 
\t <script type="text/javascript" language="javascript" src="js/jquery.dropdownPlain.js"></script> 
 
</head> 
 

 
<body> 
 

 
\t <div id="page-wrap"> 
 
\t 
 
     <img src="images/title.png" alt="Simple jQuery Dropdowns" /> 
 
\t  \t  
 
     <p><a href="index-hoverIntent.html">With hoverIntent</a> | <a href="http://css-tricks.com/simple-jquery-dropdowns/">Article</a> | <a href="http://css-tricks.com/examples/SimplejQueryDropdowns.zip">Download</a></p>  
 

 
     <ul class="dropdown"> 
 
     \t <li><a href="#">For Facilities</a> 
 
     \t \t <ul class="sub_menu"> 
 
     \t \t \t <li><a href="#">Artificial Turf</a></li> 
 
     \t \t \t <li> 
 
     \t \t \t \t <a href="#">Batting Cages</a> 
 
     \t \t \t \t <ul> 
 
     \t \t \t \t \t <li><a href="#">Indoor</a></li> 
 
     \t \t \t \t \t <li><a href="#">Outdoor</a></li> 
 
     \t \t \t \t </ul> 
 
     \t \t \t </li> 
 
     \t \t \t <li><a href="#">Benches &amp; Bleachers</a></li> 
 
     \t \t \t <li><a href="#">Communication Devices</a></li> 
 
     \t \t \t <li><a href="#">Dugouts</a></li> 
 
     \t \t \t <li><a href="#">Fencing &amp; Windscreen</a></li> 
 
     \t \t \t <li><a href="#">Floor Protectors</a></li> 
 
     \t \t \t <li><a href="#">Foul Poles</a></li> 
 
     \t \t \t <li><a href="#">Netting</a></li> 
 
     \t \t \t <li><a href="#">Outdoor Furniture &amp; Storage</a></li> 
 
     \t \t \t <li><a href="#">Outdoor Signs</a></li> 
 
     \t \t \t <li><a href="#">Padding</a></li> 
 
     \t \t \t <li><a href="#">Scoreboards</a></li> 
 
     \t \t \t <li><a href="#">Shade Structures</a></li> 
 
     \t \t \t <li><a href="#"> - VIEW ALL - </a></li> 
 
     \t \t </ul> 
 
     \t </li> 
 
     \t <li><a href="#">Field Maintenance</a> 
 
     \t \t <ul class="sub_menu"> 
 
     \t \t \t <li><a href="#">All-in-One Team Cart</a></li> 
 
     \t \t \t <li><a href="#">Air &amp; Electrical Reels</a></li> 
 
     \t \t \t <li><a href="#">Field Drags</a></li> 
 
     \t \t \t <li> 
 
     \t \t \t \t <a href="#">Field Marking Equipment</a> 
 
     \t \t \t \t <ul> 
 
     \t \t \t \t \t <li><a href="#">Batter's Box Templates</a></li> 
 
     \t \t \t \t \t <li><a href="#">Dryline Markers</a></li> 
 
     \t \t \t \t \t <li><a href="#">Field Paint</a></li> 
 
     \t \t \t \t \t <li><a href="#">Field Sprayers</a></li> 
 
     \t \t \t \t \t <li><a href="#">Stencils</a></li> 
 
     \t \t \t \t </ul> 
 
     \t \t \t </li> 
 
     \t \t \t <li> 
 
     \t \t \t \t <a href="#">Field Tarps</a> 
 
     \t \t \t \t <ul> 
 
     \t \t \t \t \t <li><a href="#">Area Tarps</a></li> 
 
     \t \t \t \t \t <li><a href="#">Growth Covers/Protectors</a></li> 
 
     \t \t \t \t \t <li><a href="#">Infield Tarps</a></li> 
 
     \t \t \t \t \t <li><a href="#">Tarp Accessories</a></li> 
 
     \t \t \t \t </ul> 
 
     \t \t \t </li> 
 
     \t \t \t <li><a href="#">Hand Tools</a></li> 
 
     \t \t \t <li> 
 
     \t \t \t \t <a href="#">Irrigation, Hoses, Nozzles</a> 
 
     \t \t \t \t <ul> 
 
     \t \t \t \t \t <li><a href="#">Hoses &amp; Hose Reels</a></li> 
 
     \t \t \t \t \t <li><a href="#">Irrigation</a></li> 
 
     \t \t \t \t \t <li><a href="#">Nozzles</a></li> 
 
     \t \t \t \t </ul> 
 
     \t \t \t </li> 
 
     \t \t \t <li><a href="#">Layout &amp; Measurement Tools</a></li> 
 
     \t \t \t <li><a href="#">Moisture Removal</a></li> 
 
     \t \t \t <li><a href="#">Mound &amp; Home Plate Fortification</a></li> 
 
     \t \t \t <li><a href="#">Mowers &amp; Stripers</a></li> 
 
     \t \t \t <li><a href="#">Soil &amp; Enviornmental Management</a></li> 
 
     \t \t \t <li><a href="#">Soil Amendments</a></li> 
 
     \t \t \t <li><a href="#">Spreaders &amp; Sweepers</a></li> 
 
     \t \t \t <li><a href="#"> - VIEW ALL - </a></li> 
 
     \t \t </ul> 
 
     \t </li> 
 
     \t <li><a href="#">Game-Practice Equipment</a> 
 
     \t \t <ul class="sub_menu"> 
 
     \t \t \t <li> 
 
     \t \t \t \t <a href="#">Baseball - Softball</a> 
 
     \t \t \t \t <ul> 
 
     \t \t \t \t \t <li><a href="#">Base Accessories</a></li> 
 
     \t \t \t \t \t <li><a href="#">Bases &amp; Home Plates</a></li> 
 
     \t \t \t \t \t <li><a href="#">Game Accessories</a></li> 
 
     \t \t \t \t \t <li><a href="#">Pitching Rubbers</a></li> 
 
     \t \t \t \t </ul> 
 
     \t \t \t </li> 
 
     \t \t \t <li> 
 
     \t \t \t \t <a href="#">Batting Practice Equipment</a> 
 
     \t \t \t \t <ul> 
 
     \t \t \t \t \t <li><a href="#">Backstops</a></li> 
 
     \t \t \t \t \t <li><a href="#">Infield Screens</a></li> 
 
     \t \t \t \t \t <li><a href="#">Jugs Pitching Machines</a></li> 
 
     \t \t \t \t \t <li><a href="#">Turf Mats</a></li> 
 
     \t \t \t \t \t <li><a href="#">Turf Protectors</a></li> 
 
     \t \t \t \t \t <li><a href="#">Replacement Accessories</a></li> 
 
     \t \t \t \t </ul> 
 
     \t \t \t </li> 
 
     \t \t \t <li> 
 
     \t \t \t \t <a href="#">Batting Cages</a> 
 
     \t \t \t \t <ul> 
 
     \t \t \t \t \t <li><a href="#">Indoor</a></li> 
 
     \t \t \t \t \t <li><a href="#">Outdoor</a></li> 
 
     \t \t \t \t </ul> 
 
     \t \t \t </li> 
 
     \t \t \t <li> 
 
     \t \t \t \t <a href="#">Portable Mounds</a> 
 
     \t \t \t \t <ul> 
 
     \t \t \t \t \t <li><a href="#">Batting Practice Mounds</a></li> 
 
     \t \t \t \t \t <li><a href="#">Game Mounds</a></li> 
 
     \t \t \t \t \t <li><a href="#">Practice Mounds</a></li> 
 
     \t \t \t \t </ul> 
 
     \t \t \t </li> 
 
     \t \t \t <li> 
 
     \t \t \t \t <a href="#">Football</a> 
 
     \t \t \t \t <ul> 
 
     \t \t \t \t \t <li><a href="#">First Down Markers</a></li> 
 
     \t \t \t \t \t <li><a href="#">Football Accessories</a></li> 
 
     \t \t \t \t \t <li><a href="#">Football Goalposts</a></li> 
 
     \t \t \t \t </ul> 
 
     \t \t \t </li> 
 
     \t \t \t <li> 
 
     \t \t \t \t <a href="#">Soccer</a> 
 
     \t \t \t \t <ul> 
 
     \t \t \t \t \t <li><a href="#">Soccer Goals</a></li> 
 
     \t \t \t \t \t <li><a href="#">Soccer Accessories</a></li> 
 
     \t \t \t \t </ul> 
 
     \t \t \t </li> 
 
     \t \t \t <li><a href="#"> - VIEW ALL - </a></li> 
 
     \t \t </ul> 
 
     \t </li> 
 
     \t <li><a href="#">Training &amp; Conditioning</a> 
 
     \t \t <ul class="sub_menu"> 
 
     \t \t \t <li><a href="#">Ladders &amp; Sticks</a></li> 
 
     \t \t \t <li><a href="#">Hurdles</a></li> 
 
     \t \t \t <li><a href="#">Training Accessories</a></li> 
 
     \t \t \t <li><a href="#">Smart-Cart Training System</a></li> 
 
     \t \t \t <li><a href="#">Smart-Hurdle Collection</a></li> 
 
     \t \t \t <li><a href="#"> - VIEW ALL - </a></li> 
 
     \t \t </ul> 
 
     \t </li> 
 
     \t <li><a href="#">Books-Videos</a> 
 
     \t \t <ul class="sub_menu"> 
 
     \t \t \t <li><a href="#">Field Design &amp; Maintenance</a></li> 
 
     \t \t \t <li><a href="#">Turf Management</a></li> 
 
     \t \t \t <li><a href="#">Training</a></li> 
 
     \t \t \t <li><a href="#"> - VIEW ALL - </a></li> 
 
     \t \t </ul> 
 
     \t </li> 
 
     </ul> 
 
\t \t 
 
\t </div> 
 

 
</body> 
 

 
</html>

上面的代碼增加了一類名爲「懸停」頂層UL,這樣一來,你可以使用CSS來保持第一子菜單打開。將鼠標懸停在子菜單ul上,然後將其可見性更改爲「可見」,同時將類「懸停」在頂層ul上。

您可以添加hoverIntent延遲打開菜單一點,停止意外菜單打開,但這不是必需的。

在你的情況下,確保最高級別的ul只有當你將鼠標懸停在該元素及其子元素上時纔會刪除它的「懸停」類(再次參見我發佈的示例)。

+0

謝謝你的支持Nathaniel Flick;首先....你確定我的jsfiddle不起作用嗎?我的同事檢查了他的電腦,看起來很好。 https:// jsfiddle。淨/ yLpLfp9w/1/ 我覺得你的例子是什麼我想要實現太複雜了,如果你看看,這個問題不顯示的子菜單,做到這一點,我無法實現的就是保持可見盒我正在顯示它們 –

+1

我在使用最新的FF的Mac上,除了黑條之外什麼都看不到,沒有鏈接顯示。我的解釋討論瞭如何保持懸停,確保在離開主ul時選擇ul元素和只有鼠標懸停。一旦我可以運行它,我可以用你的實際代碼做更多的事情。 –

+0

給我一點點,我看你沒有的jQuery在你的提琴跑,我補充說,然後將更新我的回答,以滿足您的需求。 –

相關問題