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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

525閲覧

jQueryを用いた再帰的な要素の削除

ponyo877

総合スコア17

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/01/27 17:13

達成したいこと

下記のHTML_AからHTML_Bのみ残すためにjQueryを用いて特定の要素を削除(または不可視化)したいと考えています。

html

1<!-- HTML_A --> 2<ul class="item_all"> 3 <li class="item_a">4 <ul> 5 <li>A-1 6 <ul> 7 <li>A-1-1</li> 8 <li>A-1-2</li> 9 <li>A-1-3</li> 10 </ul> 11 </li> 12 <li>A-2 13 <ul> 14 <li>A-2-1</li> 15 <li>A-2-2</li> 16 </ul> 17 </li> 18 </ul> 19 </li> 20 <li class="item_b">21 <ul> 22 <li>B-1 23 <ul> 24 <li>B-1-1</li> 25 <li>B-1-2</li> 26 </ul> 27 </li> 28 </ul> 29 </li> 30 <li class="item_c">31 <ul> 32 <li>C-1 33 <ul> 34 <li>C-1-1</li> 35 <li>C-1-2</li> 36 </ul> 37 </li> 38 <li>C-2 39 <ul> 40 <li>C-2-1</li> 41 </ul> 42 </li> 43 <li>C-3 44 <ul> 45 <li>C-3-1</li> 46 <li class="target">C-3-2</li> 47 <li>C-3-3</li> 48 </ul> 49 </li> 50 </ul> 51 </li> 52</ul>

html

1<!-- HTML_B --> 2<ul class="item_all"> 3 <li class="item_c">4 <ul> 5 <li>C-3 6 <ul> 7 <li class="target">C-3-2</li> 8 </ul> 9 </li> 10 </ul> 11 </li> 12</ul>

実践したこと

jQueryを用いて$('要素').remove()を繰り返すことを考えましたが、それを再帰的に実施する方法までたどり着きませんでした。

お忙しいところお手数ですが、ご協力お願いいたします。

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

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

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

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

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

kei344

2020/01/27 17:31

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
basicemkk

2020/01/27 18:05

$('.item_a', 'item_b').remove(); でできないでしょうか?
ponyo877

2020/01/28 14:26

>kei344さん 失礼しました修正します。 >basicemkkさん 質問の説明がかけていました。こちら複数の子要素に対して更に複数の子要素が連なるような状況で特定の子要素とその先祖のみを残すように他の要素を削除するためにはどうしたら良いのかという抽象的な質問になります。そのため、上記解答よりも具体的な解法を求めています。
guest

回答1

0

ベストアンサー

こんにちは

再帰を使わなくても、以下でいけるのではと思います。

javascript

1$('li').filter( 2 (i, el) => !$(el).hasClass('target') && $('li.target', el).length === 0 3).remove();

以下、上記を使ったサンプルです。削除ボタンをクリックすると、HTML_Bの状態になる想定です。

投稿2020/01/27 18:02

jun68ykt

総合スコア9058

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

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

ponyo877

2020/01/28 14:28

ありがとうございます。codepenで理解が助かりました。
jun68ykt

2020/01/28 15:09

どういたしまして、解決されたようでよかったです????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問