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

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

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

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

jQuery

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

Q&A

2回答

814閲覧

parents( )をpurejsで実現するには

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2019/06/16 03:41

javascript

1$('#hoge').parents('.hogehoge').find('.hoge')

上記を直感的に下記のように書き換えて見たものの、動作しませんでした

javascript

1document.querySelector('#hoge').parentNode('.hogehoge').querySelector('.hoge')

jqueryのparentsのように祖先要素まで参照し、さらにその中に含まれる特定のクラスを抽出するにはどのような記述になるのでしょうか?

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

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

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

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

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

m.ts10806

2019/06/16 04:07

一気にすべて実行するのではなく、ひとつひとつ段階的に確かめてみましたか?
退会済みユーザー

退会済みユーザー

2019/06/16 04:44 編集

parentNodeまでは取得できたのですが、そこからクラスを取得するにはどうすればよいですか?
guest

回答2

0

jQuery()

JavaScript

1$('#hoge').parents('.hogehoge').find('.hoge')

回りくどい処理をされていますね…。

HTML

1<style> 2div,p { 3 margin: 1em; 4 border: solid 1px black; 5} 6</style> 7</head> 8<body> 9<div class="hogehoge"> 10 .hogehoge 11 <div class="hoge"> 12 .hoge 13 <div class="hoge"> 14 .hoge 15 <div id="hoge" class="hoge"> 16 #hoge.hoge 17 <p class="hoge">.hoge</p> 18 </div> 19 </div> 20 </div> 21</div> 22<script> 23'use strict'; 24const hoge1 = jQuery('#hoge').parents('.hogehoge').find('.hoge'); 25const hoge2 = jQuery('.hogehoge:has( #hoge) .hoge'); 26 27console.log([...hoge1]); 28console.log([...hoge2]); 29</script>

querySelectorAll()

残念ながら、querySelectorAll():has() の実装が整うのは先なので、:has() を含まないセレクタで検索後に #hoge を含むノードを抽出する事になります。

  • #hoge を子孫に持つノード
  • 自身が #hoge のノード
  • #hoge を祖先に持つノード

NodeList.prototype.forEach()で繰り返し処理を実行すれば良いでしょう。

初歩的なミス

上記を直感的に下記のように書き換えて見たものの、動作しませんでした

JavaScript

1document.querySelector('#hoge').parentNode('.hogehoge').querySelector('.hoge')

parentNode はプロパティであり、メソッドではありません。
基本的な部分で躓いているようですので、「オブジェクト」「DOM」など、基礎に立ち返って学習し直す事をお勧めします。

Re: realmccoy さん

投稿2019/06/16 05:08

think49

総合スコア18164

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

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

0

厳密にはparentsではないのですが親をさかのぼっていく場合
closestが実装されているのでつかえるかも
(以下例だと#hogeが.fugaを兼ねている場合は遡らないので注意)

javascript

1<script> 2window.addEventListener('DOMContentLoaded', function(e){ 3 console.log(document.querySelector('#hoge').closest('.fuga').querySelectorAll('.piyo')); 4}); 5</script> 6 7<div class="fuga">fuga 8<div>dummy 9<div class="piyo">piyo1</div> 10<div>dummy</div> 11<div id="hoge">hoge</div> 12</div> 13<div class="piyo">piyo2</div> 14<div class="piyo">piyo3</div> 15</div>

投稿2019/06/17 07:19

yambejp

総合スコア114843

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問