2011-03-27 73 views
0

我對jQuery非常陌生,所以我試圖讓一小段代碼工作。 我正在嘗試創建一種手風琴菜單。獲取jQuery與if語句一起工作

首先,我確實非常相似,我想要的東西(看一些教程後):

<script type="text/javascript"> 
$(document).ready(function(){ 
    $(".content").hide(); 
    mainmenu(); 
}); 

function mainmenu(){   
    $(".option").click(function(){ 
      $(".content").slideUp("slow"); 
      $(this).children("div.content").slideDown("slow"); 
    }); 
} 

它工作得很好,但它做了「隱藏」 +「秀」的動畫,如果我點擊了一個打開的選項。

所以,我試圖添加一個條件來讓菜單做我想要的,但它不起作用。即使現在開始隱藏的內容也不起作用。

的一段代碼,現在不工作是這個:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $(".content").hide(); 
    mainmenu(); 
}); 

function mainmenu(){   
    $(".option").click(function(){ 
      if (($(this).children("div.content").is(":hidden")){ 
       $(".content").slideUp("slow"); 
       $(this).children("div.content").slideDown("slow"); 
      }else{ 
       $(".content").slideUp("slow"); 
      } 
    }); 
} 

所以,如果內容不隱藏,它應該只是隱藏內容,而不是隱藏,並再次顯示。

我不知道我是否以不好的方式接近問題或什麼。我對此很陌生。

如果有人能幫助我,我會非常感激。

謝謝。

編輯:我錯過了if語句的一個括號。它現在正在工作!順便說一聲,非常感謝你

+0

什麼不行?怎麼了? *編輯:我認爲你可以安全地刪除這個問題;)* – 2011-03-27 21:12:04

+0

我自己現在看到了這個問題,我錯過了一個')'在IF – 2011-03-27 21:13:09

+0

結束啊,對。添加我的答案,然後再看到您的編輯,sry :) – wildcard 2011-03-27 21:14:21

回答

0

看起來像一個錯字。

if (($(this).children("div.content").is(":hidden")){

應該

if ($(this).children("div.content").is(":hidden")){

0

你可以使用 「.slideToggle()」,這不正是相同的效果基本show()或了slideDown()。你可以做的另一件事是當你打開一個使用.siblings()方法關閉所有其他內容div時。有關更多詳情,請參閱jQuery UI Accordion - How to remove style completly?。我舉了一個jQuery和HTML結構的例子。