2012-03-14 9 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; 
    } 

注意はまた、セレクタで「NAV」を必要としないこと。とにかく "id"の値はページ上で一意でなければなりません。

varを使用することは、一般的には本当に重要なことですが、それは悪いことではないという考えを得ることはできません。この場合、は、関数スコープ外で宣言された変数にアクセスするには、が必要です。

+0

宣言するのにvarを使用することはありませんでしたが、最近開始しました。ありがとう。 – iiz

0

var opentagsは、そのコールバック内にのみ存在する新しいローカル変数を作成します。
既存のグローバル変数を設定します。

関連する問題