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

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

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

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

jQuery

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

Q&A

解決済

2回答

3561閲覧

特定の要素の配下にある全ての属性を選択するセレクタ

SugiuraY

総合スコア317

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2017/06/22 07:19

重ねての質問、恐縮ですがお尋ねをさせてください。
例えば、下記のHTMLのような場合
id="a"のdiv要素の配下にある全ての要素を対象とするようなセレクタを探しております。
より具体的な作業としては要素内の文字列について検索して置換しようとしております。
単一のノードであれば
$(function() {
$('#a:contains("XYZ")').each(function(){
......
でできるのですが、配下にある全てのタグにある文字列を対象としたいのですが
探してもそのようなセレクタの設定の仕方を探すことができなかったのですが
不可能なのでしょうか?下記例の場合はid="a"の配下にある、id="b"/id="A"/id="ko"id="1"/全ての要素
が対象になりますが、実際にはどのようなタグがあるのか、いくつあるのかは識別することができず、わかっているのは
id="a"の配下にあるというだけです。
宜しくお願い申し上げます。

HTML

1<div id="a"> 2 <div id="b"> 3 <h1 id="A"></h1> 4 <span id="ko"> 5 <table id="1"> 6 7 </table> 8 </span> 9 10 </div> 11 <div id="c"> 12 <span id="otsu"> 13 </span> 14 15 </div> 16 17</div>

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

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

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

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

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

x_x

2017/06/22 07:58

"XYZ"はないのにid="b"/id="A"/id="ko"id="1"/全ての要素が対象になって、id="c"/id="otsu"が対象外になるのはなぜでしょうか?
SugiuraY

2017/06/22 09:14

ご指摘有難うございます。記載誤りで、全て対象です。現在結果的にeachがループせずに、1つ目の要素しかreplaceしない状況です。。
guest

回答2

0

$('#a *')などユニバーサルセレクタを使用したらできないでしょうか?

投稿2017/06/22 07:45

T_sa

総合スコア353

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

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

SugiuraY

2017/06/22 07:49

ご回答有難うございます。 それも検討したのですが:containsを使用する場合、うまくいきませんでした。。。 $('#a *:contains("XYZ")').each(function(){ var txt = $(this).text(); $(this).html( txt.replace(/XYZ/g,'<span style="background-color:#f9ff8a">XYZ</span>') ); });
x_x

2017/06/22 08:15

text()ではなく、html()ではないですか?
SugiuraY

2017/06/22 08:33

あ、本当ですね!コメントありがとうざいます! 無事解決いたしました。宜しくお願い申し上げます。
guest

0

ベストアンサー

「$('#a').children()」でとれるのでは?

投稿2017/06/22 07:32

tkturbo

総合スコア5572

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

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

SugiuraY

2017/06/22 07:41

ご回答ありがとうございます。 重ねての確認で恐縮ですが、 childrenの要素に含まれる文字列を検索して.replaceするのですが、この方法では:containsを使用することができないのではないでしょうか?
tkturbo

2017/06/22 07:48

「$('#a').children().each(function(index, elm){$(elm).text($(elm).text().replace('target', 'replace'));});」とか?
SugiuraY

2017/06/22 08:28

ご回答ありがとうございます。 なるほど!と思ったのですが、実行した結果、全てのタグが消滅し、replaceしたタグだけ文字列として残ります。 abcdefghijklmnopqrstuvw<span style="background-color:#f9ff8a">XYZ</span> タグが消滅してしまっているので、<pre>で表現したようになります。。 コード自体に問題はないように思えるのですが。。
SugiuraY

2017/06/22 08:34

上記の通り解決いたしました、html()でしたね、、 お力添え、深謝を申し上げます。
tkturbo

2017/06/22 08:35

じゃあ「$('#a').children().each(function(index, elm){$(elm).html($(elm).html().replace('target', 'replace'));});」とかは?
tkturbo

2017/06/22 08:36

解決されたので無駄なコメントになりましたorz
SugiuraY

2017/06/22 08:42

いえいえ、とんでもないです。大変助かりましたのでベストアンサーにさせて頂きました。 といいながら、複数あるうち初めの1つしかreplaceされていない不具合が見つかりeachを解析中です、、、orz
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問