2012-03-22 96 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