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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

1580閲覧

アコーディオンメニューのリンク先でクリックしたメニューを開いたままにしたい

GOLDKAST

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/12/04 18:18

編集2021/12/05 08:08

【現在の状況】
以下のページのサイドメニューの「トップス > Tシャツ」をクリックした時にリンク先に進むとアコーディオンがすべて閉じてしまいます。

http://goldkast.com/product-category/tops/

【解決したいこと】
リンク先でも「トップス > Tシャツ」が開いた状態にするにはどうすればいいのがご教授頂けないでしょうか。

コードの流用先:
https://codepen.io/Creaticode/pen/ecAmo

どうぞよろしくお願いします。

【HTML】※HTMLコードは長いの一部省略します

<html> <head>  <link rel="stylesheet" href="https://goldkast.com/css/accordion.css"> </head> <body>  <h2 class="widget-title">商品カテゴリー</h2>   <ul id="accordion" class="accordion">    <li>      <div class="link"><i class="fas fa-tshirt"></i>トップス<i class="fa fa-chevron-down"></i></div>       <ul class="submenu">        <li><a href="http://goldkast.com/product-category/tshirt/">Tシャツ</a></li>        <li><a href="http://goldkast.com/product-category/tops/hood/">フード</a></li>        <li><a href="http://goldkast.com/product-category/tops/sweat/">スウェット</a></li>       </ul>    </li>   </ul>  <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script><script src="https://goldkast.com/js/accordion.js"></script>  </body> </html>

【CSS】

* { margin: 0; padding: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } body { background: #2d2c41; font-family: 'Open Sans', Arial, Helvetica, Sans-serif, Verdana, Tahoma; } ul { list-style-type: none; } a { color: #b63b4d; text-decoration: none; } /** ======================= * Contenedor Principal ===========================*/ h1 { color: #FFF; font-size: 24px; font-weight: 400; text-align: center; margin-top: 80px; } h1 a { color: #c12c42; font-size: 16px; } .accordion { width: 100%; max-width: 360px; margin: 30px auto 20px; background: #FFF; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .accordion .link { cursor: pointer; display: block; padding: 15px 15px 15px 42px; color: #4D4D4D; font-size: 14px; font-weight: 700; border-bottom: 1px solid #CCC; position: relative; -webkit-transition: all 0.4s ease; -o-transition: all 0.4s ease; transition: all 0.4s ease; } .accordion li:last-child .link { border-bottom: 0; } .accordion li i { position: absolute; top: 16px; left: 12px; font-size: 18px; color: #595959; -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: #b63b4d; } .accordion li.open i { color: #b63b4d; } .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: #444359; font-size: 14px; } .submenu li { border-bottom: 1px solid #4b4a5e; } .submenu a { display: block; text-decoration: none; color: #d9d9d9; padding: 12px; padding-left: 42px; -webkit-transition: all 0.25s ease; -o-transition: all 0.25s ease; transition: all 0.25s ease; } .submenu a:hover { background: #b63b4d; color: #FFF; }

【JS】

$(function() { var Accordion = function(el, multiple) { this.el = el || {}; this.multiple = multiple || false; // Variables privadas var links = this.el.find('.link'); // Evento links.on('click', {el: this.el, multiple: this.multiple}, this.dropdown) } 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); });

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/12/04 21:09

コードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564 あとタイトル「閉じたい」内容「開いた状態にしたい」と 矛盾が見られます。どちらでしょう。
guest

回答1

0

コードの流用先 と同じCSS, JSを使っているなら、開いておきたいli要素に class="default open" を付加しておけばいいかと思います。

html

1 <ul id="accordion" class="accordion"> 2 <li class="default open"> 3 <div class="link"><i class="fas fa-tshirt"></i>トップス<i class="fa fa-chevron-down"></i></div> 4 <ul class="submenu"> 5 <li><a href="http://goldkast.com/product-category/tshirt/">Tシャツ</a></li> 6 <li><a href="http://goldkast.com/product-category/tops/hood/">フード</a></li> 7 <li><a href="http://goldkast.com/product-category/tops/sweat/">スウェット</a></li> 8 </ul> 9 </li> 10 </ul>

投稿2021/12/05 02:35

hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GOLDKAST

2021/12/05 04:48

早々にご回答頂き誠にありがとうございます! コードの流用先 と同じCSS, JSを流用していますが、 class="default open" をがもともと付加されていた箇所があり、そこがつねにーオープンな状態だったのでメニューを選択しない状態では閉じるようにclass="default open"の部分は削除し、表記しておりません。 私が希望するのは以下のスクショのように特定のリンクが常にオープンしているのではなく、アコーディオンメニューをクリックし希望のメニューをクリック、リンク先でもサイドメニューのアコーディオンが開いた状態にできるようにしたいと思っています。 JSをカスタマイズしないといけないような気がするのですが、いかがでしょうか? スクショ: https://snipboard.io/oXtROH.jpg
hatena19

2021/12/05 04:59

HTMLはサーバーサイドスクリプトで動的に生成しているのでしょうか。 何を使っているのか分かりませんが、サーバー側でHTMLを生成するときに、URLによって、特定のli要素にクラスを追加するのが普通のやり方かと。 クライアントサイドスクリプト(JS)でするなら、location.href でページのURLを取得してそれで判断して、クラスを付加することになりますね。
GOLDKAST

2021/12/05 07:48

なるほどそういうことなんですね!! そこらへんがあまり詳しくなうのですがクラスを追加する方法で問題か解決を模索してみようかと思います。 解決しまいたらまたコメントさせて頂きたいと思います。ます。 引き続きよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問