2012-03-22 92 views
0

我的网站正在经历一个巨大的改造。我想添加更多的功能,但我认为我的头脑太过分了。OnClick垂直导航

,涉及到我的问题的链接是:http://www.andrewryan.me/AndrewRyan/index.html

我有我的顶部菜单的左边一个按钮。我做得很好,很漂亮,纯粹是css。无论何时我使用菜单,都非常烦人,必须遵循不确定性和风险路径,因为我离开了目标菜单或子菜单。

我希望用户能够点击该按钮并打开导航菜单。从那里,用户可以将他们的鼠标放在他们想要的任何地方,并且不会消失,直到他们点击元素外部或做出选择。还有一些小节我想要走到右边。那些也不得不被点击,但是如果你将鼠标从子菜单移开,那将是唯一会消失的东西。主菜单将保留。这是迄今为止的代码,我已经尝试了很多东西,但它似乎不起作用。我对jQuery或JavaScript一无所知。

的HTML:

<div id="navigation"> 
       <ul id="nav"> 
        <li><a href="#">Navigation</a> 
         <ul class="menu"> 
          <li><a href="#">Professional</a> 
           <ul class="submenu"> 
            <li><a href="#">Ambitions</a></li> 
            <li><a href="#">Resume</a></li> 
            <li><a href="#">Portfolio ></a></li> 
           </ul> 
          </li> 
          <li><a href="#">About Myself</a> 
           <ul class="submenu"> 
            <li><a href="#">My Family</a></li> 
            <li><a href="#">Interests</a></li> 
            <li><a href="#">Scrap Book</a></li> 
           </ul> 
          </li> 
          <li><a href="#">Social Life</a> 
           <ul class="submenu"> 
            <li><a href="#">Social Philosiphy</a></li> 
            <li><a href="#">My Networks ></a> 
             <ul class="submenu"> 
              <li><a href="#" target="_blank">Facebook</a></li> 
              <li><a href="#" target="_blank">Google+</a></li> 
              <li><a href="#" target="_blank">Personal Tumblr</a></li> 
              <li><a href="#" target="_blank">YouTube</a></li> 
              <li><a href="#" target="_blank">Twitter</a></li> 
              <li><a href="#" target="_blank">Deviant Art</a></li> 
              <li><a href="#" target="_blank">Sound Cloud</a></li> 
              <li><a href="#" target="_blank">Github</a></li> 
              <li><a href="#" target="_blank">Diaspora</a></li> 
              <li><a href="#" target="_blank">MySpace</a></li> 
              <li><a href="#" target="_blank">about.me</a></li> 
             </ul> 
            </li> 
           </ul> 
          </li> 
         </ul> 
        </li> 
       </ul> 
      </div> 

的CSS:

#navigation { 
    width:300px; 
    height:40px; 
    float:left; 
    margin-top:-4px; 
} 

#navigation a { 
    margin:0px auto; 
    color:#ccc; 
    outline:none; 
    z-index:5; 
} 

#nav { 
    padding:7px 6px 10px 0px; 
    background:none; 
    line-height: 100%; 
    display:inline-block; 
    } 

#nav li { 
    margin:0 0 0 5px; 
    padding:0 0 0 0px; 
    float:left; 
    position:relative; 
    list-style:none; 
    } 

#nav a { 
    border-radius:20px 25px 0 10px; 
    border-top:solid 3px #fff; 
    border-left:solid 3px #fff; 
    font-weight:bold; 
    color:#fff; 
    background:none; 
    text-decoration:none; 
    display:block; 
    padding:8px 20px; 
} 

    /* hovers and current tabs */ 
#nav a:hover { 
    border-radius:10px; 
    background:none; 
    color:#ccc; 
} 

    #nav .current a { 
    border-radius:20px 25px 0 10px; 
    background:none; 
    color:#ccc; 
    margin-bottom:0px; 
    border-top:solid 3px #ccc; 
    border-left:solid 3px #ccc; 
} 

    #nav li:hover > a { 
    border-radius:20px 25px 0 10px; 
    background:none; 
    color: #ccc; 
    margin-bottom:0px; 
    border-top: solid 3px #ccc; 
    border-left:solid 3px #ccc; 
} 

#nav ul li:hover a, #nav li:hover li a { 
    background:none; 
    border:none; 
    color:#333; 
    border-top:solid 1px #dfdfdf; 
} 

#nav ul a:hover { 
    color:black !important; 
} 

/* dropdown */ 
    #nav li:hover > ul { 
    display:block; 
    background-color:#fff; 
    border-radius:10px 10px 10px 10px; 
} 

/* level 2 list */ 
    #nav ul { 
    display:none; 
    margin: 0; 
    padding:0; 
    width:150px; 
    position:absolute; 
    top:33px; 
    left:0; 
    background:#aaa; 
    border:solid 1px #b4b4b4; 
} 

    #nav ul:hover { 
    background-color:#ddd; 
} 

    #nav ul li { 
    z-index:5; 
    font-weight:bold; 
    float:none; 
    margin:0px; 
    padding:0px; 
} 

#nav ul a { 
    font-weight:normal; 
} 

回答

0

这是一个非常简单的点击导航菜单:

http://jsfiddle.net/jtbowden/WGVum/

的代码非常简单:

$('#navigation').on('click', 'a[href="#"]', function() { 
    $('#navigation ul').hide(); // Hide everything when we click 
    var submenu = $(this).next('ul'); // Find the associated sub-menu 
    submenu.parentsUntil('#navigation').andSelf().show(); // Show all hierarchy above 
}); 

在这种情况下,我们只能有#作为HREF响应点击。这也可以是一个类,或任何其他属性。

如果你想在菜单隐藏当你点击其他地方,并切换上点击子菜单,您可以使用此代码:

$('#navigation').on('click', 'a[href="#"]', function() { 
    var submenu = $(this).next('ul'); 
    $('#navigation ul').not(submenu).hide(); 
    submenu.parentsUntil('#navigation', 'ul').show().end().toggle(); 
    return false; 
}); 

$(document).click(function() { 
    $('#navigation ul ul').hide(); 
}); 

演示:http://jsfiddle.net/jtbowden/WGVum/3/

+0

谢谢,杰夫!我真的很感激它!我一直试图让这个工作整天,我来这里,你们帮助我在一个小时左右,我对这个社区印象深刻。你们好棒! – Andrew 2012-03-22 22:45:42

1

看看这个小提琴:http://jsfiddle.net/5h6Vp/3/

$(document).on('click', function(e){ 
    if($(e.target).parents('#menu').length > 0){ 
     /*click in #menu*/ 
    }else if($(e.target).attr('id') == 'show'){ 
     $('#menu').toggle(); 
    }else{ 
     $('#menu').hide(); 
    } 
}); 

使用此代码为子菜单:

$('#menu>ul>li').has('ul').on('click', function(e){ 
    $('#menu>ul>li>ul').hide(); 
    $(this).find('ul').show(); 
}); 
$('#menu>ul>li>ul').on('mouseleave', function(e){ 
    $(this).hide(); 
}); 
$('#menu').on('mouseleave', function(e){ 
    $('#menu>ul>li>ul').hide(); 
}); 

(我写这个答案你粘贴代码之前,所以我的代码结构是一个有点不同 - 但这个想法是一样的)

+0

谢谢你这么多,无 - -减!我很惊讶你们有多快得出这么好的答案!我真的很感激它! – Andrew 2012-03-22 22:44:07