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

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

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

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

jQuery

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

Q&A

解決済

2回答

809閲覧

jqueryのfind関数から帰ってきたオブジェクト内を更にfindしたい

eleele28

総合スコア18

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2023/02/13 06:08

実現したいこと

jqueryのfind()を使って条件に合致するDOMオブジェクトを配列で取得したあと、その配列内をさらにfind()で検索したいと思っています。

前提

1回目のfind()にて、以下に示すDOMオブジェクト配列が取得できています。
この中から、2回めのfind()にて「selected」クラスが割り振られているDOMオブジェクトを持ってきたいです。
イメージ説明

発生している問題・エラーメッセージ

find()の返し値であるDOMオブジエクト配列からさらにfind()を呼び出して検索しようとしましたが、2回めのfind()呼び出しでは何も返ってこず、検索ができていません。
(2回めのfind条件であるセレクタは動的に作成するため、1回目のfindとは別個にfindしたいと思っています。)
どうすればDOMオブジェクト配列の中から該当するDOMを持ってこられるのでしょうか?

該当のソースコード

JavaScript

1//bodyをDOM検索のルートにする 2var currentDom = $('body'); 3 4//1回目find用のセレクタ文字列を取得 5var selectorStr = getSelectorStr1st(); 6 7//セレクタ文字列からDOMを取得 8currentDom = $(currentDom).find(selectorStr); 9 10//2回めfindの必要があればセレクタ文字列を取得して更にfind 11if(required2ndFind()){ 12 selectorStr = getSelectorStr2nd(); //ここでselectorStrに ".selected" が入る 13 14 //セレクタ文字列からDOMを取得 15 currentDom = $(currentDom).find(selectorStr); 16} 17

補足情報(FW/ツールのバージョンなど)

使用ブラウザ:Chrome バージョン: 108.0.5359.125(Official Build) (64 ビット)
jQueryバージョン 3.6.0

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

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

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

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

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

int32_t

2023/02/13 06:15

1回目のfind()の結果を絞り込みしたいということでしょうか。
guest

回答2

1

ベストアンサー

find() は起点要素の子孫要素を検索します。起点要素にはマッチしません。この用途なら、filter() でしょう。

投稿2023/02/13 06:20

int32_t

総合スコア21929

yambejp👍を押しています

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

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

eleele28

2023/02/13 06:43

2回めのfindをfilterに変更してバッチリでした!! findは起点であるDOMオブジェクト配列の検索はできないのですね。勉強になりました!
guest

0

findからfindは普通に繋げられます

javascript

1<script> 2$(function(){ 3 $('div').find('p').find('span').text(function(){return "x"+$(this).text();}); 4}); 5</script> 6<div> 7<p> 8<span>1</span> 9<span>2</span> 10<span>3</span> 11</p> 12<p> 13<span>4</span> 14<span>5</span> 15<span>6</span> 16</p> 17<p> 18<span>7</span> 19<span>8</span> 20<span>9</span> 21</p> 22</div>

すでに回答がついているようにfindとfilterを勘違いしているのかもしれません

投稿2023/02/13 06:29

yambejp

総合スコア117674

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問