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

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

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

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

Q&A

1回答

2031閲覧

【javascript】eqとnotを使用したindexの指定方法が分からない【jquery】

KLB686

総合スコア0

JavaScript

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

0グッド

1クリップ

投稿2022/02/24 08:06

編集2022/02/24 09:17

解決したいこと

以下⓵⓶を実現したい
⓵Q10の子要素をクリックした時に、
その要素のインデックスと等しいid="q11"の子要素にis-bigというクラスを追加したい。

⓶⓵の処理と同時にそれ以外のクラスからis-bigを削除したい。
※インデックスの一致する要素だけにis-bigがついている状態にしたい

発生している問題・エラー

⓵は実現できるが、⓶を同時に処理することができない。

image.png

該当するソースコード

-html-``` <ul class="u-mbm lists" id="jsi-q10"> <li>Q10_1</li> <li>Q10_2</li> <li>Q10_3</li> </ul> <ul class="u-mbm lists" id="jsi-q11"> <li>Q11_1</li> <li>Q11_2</li> <li>Q11_3</li> </ul> --javascript-- $("#jsi-q10") .find("li") .on("click", function () { let orderNumber = $(this).index(); $("#jsi-q11").find("li") .eq(orderNumber).addClass("is-big"); $("#jsi-q11").find("li") .not(eq(orderNumber).removeClass("is-big")); }); --css-- .is-big { font-size: 25px; } ### 自分で試したこと 「eq()」「not:」の使用方法について調べました。 not:を使って『変数:orderNumber以外のものを指定する』ことができれば 解決できる問題ではないかというところまで整理できましたが、具体的な方針が分からず質問に至りました。調べる力不足で申し訳ございません。 ### 整理できたこと 1.removeClassを使用して、適切なセレクタを指定する 2.jsi-q11.find("li") かつ orderNumber以外のindexを1で指定する 今回初めて質問させていただく初学者です。 分かりずらい点等あれば厳しくご指摘いただければと存じます。 ※以下追記 テンプレートリテラル?という表記方法を調べ、下記のように修正したところ、⓵⓶を解決することができました。しかし、正しい表記方法か不安に感じております。 正しい表記方法かどうか、ご指摘等をいただきれば幸いでございます。 ー---------------- $("#jsi-q10") .find("li") .on("click", function () { let orderNumber = $(this).index(); $("#jsi-q11").find("li").eq(orderNumber).addClass("is-big"); $("#jsi-q11").find("li").not(`:eq(${orderNumber})`).removeClass("is-big"); }); ー----------------

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

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

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

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

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

guest

回答1

0

jQuery

javascript

1<style> 2.is_big{font-size:1.5em;} 3</style> 4<script> 5$(function(){ 6 $('#jsi-q10 li').on('click',function(){ 7 var idx=$('#jsi-q10 li').index(this); 8 $('#jsi-q11 li').removeClass('is_big').eq(idx).addClass('is_big'); 9 }); 10}); 11</script> 12<ul class="u-mbm lists" id="jsi-q10"> 13<li>Q10_1</li> 14<li>Q10_2</li> 15<li>Q10_3</li> 16</ul> 17<ul class="u-mbm lists" id="jsi-q11"> 18<li>Q11_1</li> 19<li>Q11_2</li> 20<li>Q11_3</li> 21</ul>

該当するQ10を再度クリックしたらQ11をトグルする必要はないのですね?

js

javascript

1<style> 2.is_big{font-size:1.5em;} 3</style> 4<script> 5document.addEventListener('click',e=>{ 6 const t=e.target.closest('#jsi-q10 li'); 7 if(t){ 8 const idx=[...document.querySelectorAll('#jsi-q10 li')].indexOf(t); 9 document.querySelector('#jsi-q11 li.is_big')?.classList.remove('is_big'); 10 document.querySelector(`#jsi-q11 li:nth-child(${idx+1})`).classList.add('is_big'); 11 } 12}); 13</script> 14<ul class="u-mbm lists" id="jsi-q10"> 15<li>Q10_1</li> 16<li>Q10_2</li> 17<li>Q10_3</li> 18</ul> 19<ul class="u-mbm lists" id="jsi-q11"> 20<li>Q11_1</li> 21<li>Q11_2</li> 22<li>Q11_3</li> 23</ul>

投稿2022/02/24 08:18

編集2022/02/24 08:30
yambejp

総合スコア117691

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

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

KLB686

2022/02/24 09:14

回答ありがとうございます。 知識不足で申し訳ございません。 トグル>再度クリックした時に該当のQ11を「toggleClass」、is-bigを付け外しする動作が必要かどうか というご質問でよろしいのでしょうか。 再度の付けはずしは発生しないものと想定していました。(的外れであれば申し訳ございません) また、自分で再度調べてみたところ、テンプレートリテラル?という表記方法を使って、 修正をしてみたところ解決をしました。ただ、表記方法が正しいか大変不安に感じております。 よろしければ、【編集・修正】内容について書き方が正しいかご教示をいただければ幸いでございます。
yambejp

2022/02/24 09:26

> is-bigを付け外しする動作が必要かどうかというご質問 そういうことです。 is_bigな「#jsi-q11 li」の10を再度クリックしてもis_bigを外す必要はないですね?・・・という質問です。 私の回答はトグルしない作りになっています
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問