2012-03-14 97 views
0

我在設置一些開啓和關閉菜單的變量時遇到了問題。我需要一個變量,我可以查詢,因爲我有其他點擊功能會打開和關閉不同的菜單,所以我不能使用切換。jQuery中的JS變量設置點擊功能

我不明白爲什麼下面的代碼不起作用。請有人建議,因爲我不明白它,我理解變量範圍,但我認爲jQuery做點擊功能的方式讓我感到困惑。或者,也許有一個更好的模式來遵循這種功能..提前

var opentags = false; 

$('a#tags').click(function() { 

    if (opentags == true) { 
      $('nav#tags').slideUp(); 
      // and other stuff 
      var opentags = false; 
    } else { 
      $('nav#tags').slideDown(); 
      // and other other stuff 
      var opentags = true; 
    }}); 

感謝。

回答

2

由於var關鍵字,您在函數中重新聲明新的局部變量。擺脫這一點。

而且,沒有理由布爾變量比較布爾常量:

if (opentags) { 
    $('#tags').slideUp(); 
    opentags = false; 
    } 
    else { 
    $('#tags').slideDown(); 
    opentags = true; 
    } 

還要注意的是你不需要的「導航」的選擇;無論如何,「ID」值在頁面上應該是唯一的。

使用var是一個非常重要的事情,當然,所以不要認爲這是件壞事。只是在這種情況下,您要才能訪問在函數作用域外聲明的變量。

+0

我從來沒有使用var來聲明,但最近開始,現在我完全理解。謝謝。 – iiz 2012-03-14 16:33:34

0

var opentags創建一個新的局部變量,它只存在於該回調中。
你想設置現有的全局變量。