[解決済み] querySelectorAllを使用して直接の子を取得する
質問
こんなことができるようになりました。
<div id="myDiv">
<div class="foo"></div>
</div>
myDiv = getElementById("myDiv");
myDiv.querySelectorAll("#myDiv > .foo");
の直接の子プロセスをすべて取得することができます。
myDiv
要素で、クラス
.foo
.
問題なのは、このように
#myDiv
に対してクエリを実行しているので、セレクタ内の
myDiv
要素(だから、明らかに冗長です)。
を残すことができるはずです。
#myDiv
をオフにすると、セレクタは正規の構文ではなくなる。
>
.
セレクタが実行されている要素の直接の子だけを取得するセレクタの書き方をご存知の方はいらっしゃいますか?
どのように解決するのですか?
いい質問ですね。質問された時点では、quot;combinator rooted query" を行うための普遍的な実装方法(たとえば ジョン・レシグがそう呼んだ は存在しなかった。
では :スコープ 擬似クラスが導入されました。これは 対応 EdgeやIEの[Pre-Chrominum]バージョンではサポートされていますが、Safariではすでに数年前からサポートされています。それを利用すると、あなたのコードはこうなります。
let myDiv = getElementById("myDiv");
myDiv.querySelectorAll(":scope > .foo");
なお、場合によっては
.querySelectorAll
で、他の昔ながらの DOM API 機能を使用します。たとえば
myDiv.querySelectorAll(":scope > *")
と書くだけです。
myDiv.children
といった具合に。
それ以外の場合は、まだ
:scope
このような場合、カスタムフィルタロジックを追加しない限り、他の方法を思いつきません (例えば、find
myDiv.getElementsByClassName("foo")
その
.parentNode === myDiv
また、任意のセレクタ文字列を入力とし、マッチのリストを出力したいだけのコードパスをサポートしようとしている場合は、明らかに理想的ではありません。しかし、もしあなたが私のように、単に「ハンマーしか持っていない」と考えて行き詰まり、この質問をすることになったのなら、様々な種類の
その他
DOMが提供するツールもあります。
関連
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] jQueryを使ってドロップダウンリスト(セレクトボックス)から選択されたテキストを取得する
-
[解決済み] セレクタの子を取得する方法は?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] JavaScriptでドロップダウンリストの選択値を取得する
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] JavaScriptでページの一番上までスクロールする?
-
[解決済み] JavaScriptでテキスト入力フィールドの値を取得するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptの関数この指摘の問題を説明
-
要素ツリー制御によるvueTreeテーブル
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
vueにおけるv-forループオブジェクトのプロパティ
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み】JavaScriptの配列でforEachが関数でない不具合
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)