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

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

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

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

Q&A

解決済

2回答

188閲覧

jQueryでHTML要素にeachをかける

Chandler_Bing

総合スコア673

jQuery

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

0グッド

1クリップ

投稿2019/03/15 13:34

編集2019/03/15 16:35

以下のようなHTMLのコードがあります。answerboxの中にselectedが含まれているとこの問題は選択済みという処理をしたいです。

HTML

1 <div class="dom"> 2 3 <div class="questionbox"> 4 5 <div class="questiondiv"> 6 <p id="" div="question">Q. I've ____ studying English for 7 years.</p> 7 </div> 8 9 <div class="answerbox"> 10 <span class="answer selected">1.have</span> 11 <span class="result worng">...WRONG</span> 12 </div> 13 14 <div class="answerbox"> 15 <span class="answer">2.had</span> 16 <span class="result worng">...WRONG</span> 17 </div> 18 19 <div class="answerbox"> 20 <span class="answer">3.been</span> 21 <span class="result correct">...CORRECT</span> 22 </div> 23 24 <div class="answerbox"> 25 <span class="answer">4.done</span> 26 <span class="result worng">...WRONG</span> 27 </div> 28 29 </div> 30 31 </div>

その判定として以下のfunctionを作成しました。

js

1function checkClick(){ 2 $('.answerbox').each(function(index, value) { 3 if ($(value).find('.aaaa')) { 4 console.log('Has been selected'); 5 } else { 6 console.log('Not yet'); 7 } 8 }) 9 }

if ($(value).find('.aaaa'))の所には本来selectedが入るべきですがこれでもtrueとなりHas been selectedが表示されてしまいます。どの記述が間違えていますでしょうか。何をしてもtrueになります。

以下を試しましたが、selectedを挿入後もNot yet になります。

JS

1 function checkClick() { 2 $('.answerbox').each(function(value) { 3 if ($(value).find('.selected').size()) { 4 console.log('Has been selected'); 5 } else { 6 console.log('Not yet'); 7 } 8 }) 9 } 10 11 function checkClick() { 12 $('.answerbox').each(function(value) { 13 if ($(value).find('.selected').length) { 14 console.log('Has been selected'); 15 } else { 16 console.log('Not yet'); 17 } 18 }) 19 } 20 21 function checkClick() { 22 $('.answerbox').each(function(value) { 23 if ($(value).find('.selected'[0]) { 24 console.log('Has been selected'); 25 } else { 26 console.log('Not yet'); 27 } 28 }) 29 }

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

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

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

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

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

guest

回答2

0

自己解決

変更前

JS

1 function checkClick() { 2 $('.answerbox').each(function(value) { 3 if ($(value).find('.selected'[0]) { 4 console.log('Has been selected'); 5 } else { 6 console.log('Not yet'); 7 } 8 }) 9 }

変更後(引数にindexを追加)

JS

1 function checkClick() { 2 $('.answerbox').each(function(index,value) { 3 if ($(value).find('.selected'[0]) { 4 console.log('Has been selected'); 5 } else { 6 console.log('Not yet'); 7 } 8 }) 9 }

これで上手くいきました。[0]以外は試していませんが、おそらく上手くいくと思います。

投稿2019/03/16 11:06

Chandler_Bing

総合スコア673

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

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

0

$(value).find('.selected')は該当するものがない場合、空要素等を含むjqueryが用意したオブジェクトが返るため、true扱いとなりますので、
$(value).find('.selected')[0]とすると要素の有無がtrue,falseで返ります

投稿2019/03/15 14:38

GunseiKPaseri

総合スコア83

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

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

Chandler_Bing

2019/03/15 16:30

ありがとうございます。 function checkClick() { $('.answerbox').each(function(value) { if ($(value).find('.answer')[0]) { console.log('Has been selected'); } else { console.log('Not yet'); } }) } こうでしょうか。 このようにすると今度は全てNoy yetになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問