質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.99%

アコーディオンが閉じなくなるのを回避したい

受付中

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 491

KOO_

score 22

現在、ドロップダウンを利用してサイドナビを作っています。

無事装着は完了したのですが、一度クリックしてページ推移するとドロップダウンが動かなくなる現象が発生しております。以下でどこか間違っている部分があるのでしょうか?

<ul id="accordion" class="accordion">   

        <li><!--開始-->
          <div class="cds-navi-title"></div>
             <div class="link">
               <i class="fa fa-paint-brush"></i>
               <i class="fa fa-chevron-down"></i></div>
                  <ul class="submenu">
                     <li><%= link_to "", "/carriers/new" %></li>
                     <li><a href="#"></a></li>
                 </ul>
        </li><!--終了-->
      </ul>
ul {
    list-style-type: none;
}

 .accordion {
    list-style-type: none;
    padding: 0;
    height: 100vh;
    background-color:#0365C0;
    width: 180px;
    text-align:center;
    margin-top:-12px;
    float:left;
    position:fixed;
    z-index:7;

        .link {
            cursor: pointer;
            color: white;
            position: relative;
           padding: 10px 10px 10px;
           width: 180px;
           display: block;
           background-color: #0365C0;
           color: #ffffff;
           text-decoration: none;
           border-bottom: 1px solid #ffffff;
            }
        li:last-child .link {
            border-bottom: 0;
            }
              a, a:visited {
              color : #fff;
              }
}
.accordion li i {
    position: absolute;
    top: 16px;
    left: 12px;
    font-size: 18px;
    color: #00A2FF;
    -webkit-transition: all 0.4s ease;
    -o-transition: all 0.4s ease;
    transition: all 0.4s ease;
}


.accordion li i.fa-chevron-down {
    right: 12px;
    left: auto;
    font-size: 16px;
}

.accordion li.open .link {
    color: white;
}

.accordion li.open i.fa-chevron-down {
    -webkit-transform: rotate(180deg);
    -ms-transform: rotate(180deg);
    -o-transform: rotate(180deg);
    transform: rotate(180deg);
}

.accordion li.default .submenu {display: block;}
/**
 * Submenu
 -----------------------------*/
 .submenu {
    display: none;
    background: #00A2FF;
    font-size: 14px;
 }

 .submenu li {
    border-bottom: 1px solid white;
 }

 .submenu a {
    display: block;
    text-decoration: none;
    color: white;
    padding: 12px;
    -webkit-transition: all 0.25s ease;
    -o-transition: all 0.25s ease;
    transition: all 0.25s ease;
 }

 .submenu a:hover {
  background-color: #ffccff;
  color: #ff0000;
  text-decoration: underline;
 }

   .cds-navi-title {
     padding: 0.5em 1.0em;
     margin-top:15px;
     margin-bottom:10px;
     display:inline-block;
     font-weight: bold;
     font-size:14px;
     color: #004D7F;/*文字色*/
     background: #fff;
     border-radius: 25px;/*角の丸み*/
     }
Accordion.prototype.dropdown = function(e) {
        var $el = e.data.el;
            $this = $(this),
            $next = $this.next();

        $next.slideToggle();
        $this.parent().toggleClass('open');

        if (!e.data.multiple) {
            $el.find('.submenu').not($next).slideUp().parent().removeClass('open');
        };
    }   

    var accordion = new Accordion($('#accordion'), false);
});
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/02/06 13:22

    .accordion { の定義からするとSCSSですかね・・

    キャンセル

  • KOO_

    2019/02/06 13:43

    そうです。cssに問題があるのでしょうか?

    キャンセル

  • m.ts10806

    2019/02/06 13:45

    いえ、そういうわけではありません。現在のタグで見に来る人が全てscssをコンパイルできる環境にあるわけではないので、そこは補足なりタグに追加なりしてもらいたいなと(ちなみに私は手持ちにはコンパイル環境ありません)。
    回答を得る機会を失してしまいます。

    キャンセル

回答 1

0

情報が全く足りないからヤマカンでしか答えられないけど

一度クリックしてページ推移するとドロップダウンが動かなくなる

ページ遷移(せんい)してるからじゃない?

ブラウザはリンクをクリックしたりして、別のURLへ移動すると現在のページの情報を全て捨てて、
新しいHTMLファイルを取得してきてJavaScriptの変数領域等を全て構築し直しになるよ。

だからヘッダーなんかのWebサイト全体の共通部品に、
メニューがシュッと出てくるようなJavaScriptのし掛けを作ったら全てのページで同じJavaScriptを実行させる必要があるよ。

それやってないんじゃないかな?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる