2011-01-13 69 views
1

所以我有一個列表,我將逐一淡化每個UL元素。像這樣,切換按鈕淡入/淡出效果 - jquery

$j(function(){ 
$j('#access-navi .sub').click(function(){ 
    $j(this).find('ul li a').each(function(i){ 
    $j(this).delay(i*150).fadeIn(500); 
    }); 
}); 
}); 

本工程以diplay他們,但是當我試圖讓這個當我在按鈕上再次點擊,它不會做任何事情。

$j(function(){ 
$j('#access-navi .sub').click(function(){ 
    $j(this).find('ul li a').each(function(i){ 
    $j(this).delay(i*150).fadeToggle(500); 
    }); 
}); 
}); 

我試圖將其更改爲這一點,但是,這並不工作..

如何作出這樣的淡入也淡出後第2個點擊的按鈕。

HTML:

<div id="access-navi" role="navigation"> 
    <ul> 
    <li><a href="">Home</a></li> 
    <li class="sub"><a href="#">Code</a> 
    <ul> 
     <li><a href="">Html.Css</a></li> 
     <li><a href="">Java</a></li> 
     <li><a href="">jQuery</a></li> 
     <li><a href="">Php</a></li> 
    </ul> 
    </li> 
    </ul> 
    <div class="clear"></div> 
    </div> 
+0

對不起忘了補充一點,我有這樣的事情: 變量$ J = jQuery.noConflict (); 所以,而不是'$'我使用'$ j' –

回答

0

我相信你想這樣的事情。 toggle功能接受兩個或更多的函數作爲參數,並在點擊時交替地執行函數。因此,首先單擊它淡入,第二點擊淡出,第三點擊淡入,第四點擊了,等

$j(function(){ 
    $j('#access-navi .sub').toggle(function(){ 
     $j(this).find('ul li a').each(function(i){ 
      $j(this).delay(i*150).fadeIn(500); 
     }); 
    }, function() { 
     $j(this).find('ul li a').each(function(i){ 
      $j(this).delay(i*150).fadeOut(500); 
     }); 
    }); 
}); 
+0

此外,第二次單擊函數時沒有任何反應,因爲它已經淡入。沒有什麼可做的了。如果你想再次「淡入」,並且我不知道你爲什麼這樣做,那麼你需要在.fadeIn()之前將.hide()錨定。 –

+0

鏈接怎麼不工作了?如果我點擊一個子鏈接,鏈接將淡出,但它不會加載一個新頁面。任何想法爲什麼? –