2017-06-13 3 views
0

私はブートストラップアコーディオンで作業しています。私はアコーデオンの状態を保存できるようにしたい。私はlocalstorageを使うことにしました。ユーザーがアコーディオンを閉じて開いていない場合は、localstorageをクリアします。私はこれをすべて終えました。私の質問は、ユーザーがリンクをクリックしてアコーディオンを開閉するときに、私はクラス「折り畳まれた」のチェックをしています。それがクリックされたとき、私はそれがクラス 'collapsed'を持っていると仮定します。私はlocalstorageをクリアすることができます。しかし何らかの理由でその反対です。私がそれを否定するならば、すべてがうまくいく。私は何を見ていないのですか? HTMLのJqueryクリックイベント

$('.accordion-right').click(function() { 
    if (!$(this).hasClass('collapsed')) { 
     localStorage.clear(); 
    } else { 
     localStorage.setItem('collapseItem', $(this).attr('href')); 
    } 
    }); 

    var collapseItem = localStorage.getItem('collapseItem'); 
    if (collapseItem) { 
    if (<%= is_patient? %>) { 
     $('#record').collapse('show'); 
    } else { 
     $(collapseItem).collapse('show'); 
    } 
    } 

相続人スニペット

  <div class="panel panel-default"> 
      <div class="panel-heading"> 
       <h4 class="panel-title"> 
       <a data-toggle="collapse" data-parent="#accordion" class="accordion-right" href="#history"><span class="glyphicon glyphicon-th"> 
       </span>History</a> 
       </h4> 
      </div> 
      <div id="history" class="panel-collapse collapse"> 
       <div class="panel-body"> 
       <ul> 
        <%= nav_search_sidebar %> 
       </ul> 
       </div> 
      </div> 
      </div> 

編集:スペル明確にするために

、ブートストラップイベントは、コードの実行時に動的に追加されたクラスの崩壊」を削除し発射。

答えて

0

私はfiddleを作成しましたが、それはあなたのコードを動作させないのは正常ですか?私は自分のIDEでそれを試してきました。これは私にエラーを与えています:<%= nav_search_sidebar %>私はそれが何をしているのか分かりませんか?たぶんそれを説明する? ローカルストレージがクリアされていますか?これを使用して、このキーを持つローカルストレージがクリアされていることを確認します。localStorage.removeItem('collapseItem');

関連する問題