0

リスト要素をアコーディオン スタイルで表示/非表示にする単純な jQuery スクリプトと、表示/非表示のリストを保存するためのグローバル ブール配列があります。ただし、異なるサブリストの表示/非表示から切り替えると、ブール配列は未定義になります。つまり、そのリストを表示するために form_nav_links を使用して関数を呼び出し、その直後に help_nav_links を表示しようとすると、配列が未定義になり、余分なクリックが必要になります)。誰かがこれを修正するのを手伝ってくれますか? ここに私が持っているものがあります:

var listsOn = Boolean[2];
listsOn = [false, false];
var form_links = 0, help_links = 1;

function toggleView(subList) {
    var i;

    switch(subList){
        case "form_nav_links":
            i = form_links;
            break;
        case "help_nav_links":
            i = help_links;
            break;
        };

    if(listsOn[i]){
        $("." + subList).slideUp(1000);
        listsOn[i] = false;
        }
    else {
        $("." + subList).slideDown(1000);
        listsOn[i] = true;
        }

前もって感謝します!

4

2 に答える 2

1

ここでは、連想配列を使用する必要があります。

var listsOn = {
  form_nav_links: false,
  help_nav_links: false
};

function toggleView(subList) {
  if(typeof listsOn[subList] !== 'undefined') {
    if(listsOn[subList]{
        $("." + subList).slideUp(1000);
        listsOn[subList] = false;
    }
    else {
        $("." + subList).slideDown(1000);
        listsOn[subList] = true;
    }
  }
}
于 2012-06-27T18:21:48.207 に答える
0

代わりに slideToggle() を使用して問題を解決しました

于 2012-07-25T15:46:11.887 に答える