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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

509閲覧

対象の要素をクリックしたら、直前にクリックした要素のクラスは削除されるようにしたい

southern_flavor

総合スコア70

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/05/18 20:08

編集2020/05/18 20:09

実現したいこと・現在の仕様

今回、実現させたいことは、次の2.の箇所です。1.はすでにできました。
HTMLは動的に生成されたものです。
簡単なようでなかなかできず、教えていただけたらと思います。

  1. liをクリックしたら、クリックした現在のliタグとその親であるulタグにそれぞれactiveというクラスがつく
<h2>赤色</h2> <div> <ul class="card-list active"> <li data-name="赤色" class="active">りんご</li> </ul> </div> <h2>黄色</h2> <div> <ul class="card-list"> <li data-name="黄色">バナナ</li> </ul> </div> <h2>紫色</h2> <div> <ul class="card-list"> <li data-name="紫色">ぶどう</li> </ul> </div>

2. 下の「バナナ」をクリックしたら、クリックした現在の要素(li,ul)にactiveクラスがつき(この部分は実現できました)、1.でクリックした「りんご」のli、親のulはremoveClassで削除されるようにしたい(このやり方を知りたいです)
その後、「ぶどう」をクリックしたら、「バナナ」が書かれた要素のクラス(ul,ul)は削除されるようにしたい

<h2>赤色</h2> <div> <ul class="card-list"> <li data-name="赤色">りんご</li> </ul> </div> <h2>黄色</h2> <div> <ul class="card-list active"> <li data-name="黄色" class="active">バナナ</li> </ul> </div> <h2>紫色</h2> <div> <ul class="card-list"> <li data-name="紫色">ぶどう</li> </ul> </div>

コード

javascript

1const card = ["赤色","黄色","紫色"]; 2 3card.forEach((value) => { 4 $('.card-list').find('[data-name="'+value+'"]').addClass('active'); 5 6 $(document).on('click', '.card-list [data-name="'+value+'"]', function(){ 7 $(this).addClass('active'); 8 $(this).parents('.card-list').addClass('active'); 9 $('li').not('[data-name="'+value+'"]').removeClass('active'); 10 }) 11});

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは

<li> がクリックされたら、まずactiveであるすべての要素からactive クラスを削除してから、クリックされた<li> とその親である<ul>active にする、という考え方で、以下でいかがでしょうか?

javascript

1$('li').click(function() { 2 $('.active').removeClass('active'); 3 $(this) 4 .addClass('active') 5 .parent() 6 .addClass('active'); 7});

投稿2020/05/18 20:49

jun68ykt

総合スコア9058

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

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

southern_flavor

2020/05/19 09:23

いつも的確なご回答をいただき、ありがとうございます! 想定した通りの動きとなりました。
jun68ykt

2020/05/19 09:59

どういたしまして???? > 想定した通りの動きとなりました。 とのことでよかったです????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問