2013-04-07 183 views
0

我使用下面的代碼爲在懸停時彈出的固定側面菜單。代碼在網上找到,而且很容易地集成..Jquery,Div在視圖/鏈接懸停,固定菜單「彈出」

CSS:

<div id="nav"> 
    <ul class="nav"> 
     <li class="home"><a class="home" href="#home">Home</a></li> 
     <li class="museum"><a class="museum" href="#museum">Museum</a></li> 
     <li class="collection"><a class="collection" href="#collection">Collection</a></li> 
     <li class="timeline"><a class="timeline" href="#timeline">Timeline</a></li> 
     <li class="contact"><a class="contact" href="#contact">Contact</a></li> 
    </ul> 
    <div class="clear"></div> 
</div> 

JQuery的:

// link hover 
$(function() { 
    $('.nav a').stop().animate({'marginLeft':'-140px'},200); 
    $('.nav > li').hover(
     function() { 
      $('a',$(this)).stop().animate({'marginLeft':'-45px'},200); 
     }, 
     function() { 
      $('a',$(this)).stop().animate({'marginLeft':'-140px'},200); 
     } 
    ); 
}); 

,而且我用PlusAnchor腳本頁面滾動到右側的div:

// Page Scroll 
$('body').plusAnchor({ 
    easing: 'easeInOutExpo', 
    speed: 1000, 
    offsetTop: -60 
}); 

現在我需要修改代碼,但我不知道如何新到JQuery。我需要菜單項在用戶點擊後保持「彈出」狀態,或者在用戶滾動並且有問題的div進入視圖時彈出。

我該如何做到這一點?有沒有我可以採用的腳本?

的jsfiddle: http://jsfiddle.net/AG3tg/

+0

可你只是提供一個小提琴呢? – 2013-04-08 06:32:25

+0

好的..我添加了一個JSFiddle – obmon 2013-04-08 17:32:09

+0

創建一個名爲'.active'的類。爲'.active'創建css,然後在'li'上應用一個click事件。例如:$('。nav li')。click(function(){$(this).addClass('active')。siblings()。removeClass('active');});' – Dom 2013-04-08 17:38:53

回答

3

基本上你需要記錄被點擊的元素時,並相應地處理它。更新您的jQuery代碼如下:

$('document').ready(function() { 
    // link hover 
    $('.nav a').stop().animate({'marginLeft':'-140px'},200); 
    $('.nav > li').hover(
     function() { 
      $('a',$(this)).stop().animate({'marginLeft':'-45px'},200); 
     }, 
     function() { 
      if(!$(this).data('shown')) 
      { 
       $('a',$(this)).stop().animate({'marginLeft':'-140px'},200); 
      } 
     } 
    ).click(function() { 
     $('.nav > li').data('shown', false); 
     $(this).data('shown', true); 
     $('.nav > li a').not(':eq('+$(this).index()+')').stop().animate({'marginLeft':'-140px'},200); 
    }); 

    // plus anchor 
    $('document').plusAnchor({ 
     easing: 'easeInOutExpo', 
     speed: 1000, 
     offsetTop: -60 
    }); 
}) 

下面是一個updated jsFiddle

+0

這很安靜美麗。謝謝。只有在您滾動時,焦點div纔會更改菜單,以便正確的項目不存在。我認爲jquery.focus在這裏派上用場。讓我自己試試這個。再次感謝。 – obmon 2013-04-08 17:44:13

+1

'focus()'用於元素獲得焦點時(如點擊鏈接或關注文本輸入)。您需要爲所描述的功能組織某種形式的滾動功能。 – BenM 2013-04-08 17:45:26

+0

我明白了..好的。謝謝。 – obmon 2013-04-08 17:48:04