0

いくつかの兄弟姉妹を削除したい。以下のようにしてみました。しかし、機能していません。なぜ?そして、それを解決する方法は?

<div>
  <div id="idx1">child1 </div>
  <div id="idx2">child2</div>
  <div id="idx3">child3</div>
  ...
  <div id="/a/b/c">This should be last child</div>
  <div id="idx4">Remove it.</div>
  <div id="idx5">Remove it.</div>
  <div id="idx6">Remove it.</div>
  ...
</div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

<script>

 // Since the id contains special chars,
 // javascript method has been used to get the element.
 lastChildObj = jQuery(document.getElementById('a/b/c')); 

 // I don't know how to remove the childs after lastChildObj.
 // I tried as given below.
 lastChildObj.filter('~').remove();

4

5 に答える 5

1

これはあなたのために働くはずです:

var base = document.getElementById('/a/b/c');
while(base.nextSibling){ // While the element has siblings
    base.parentElement.removeChild(base.nextSibling); // remove the siblings from the parent element.
}

実例

また、少し効率的にすることもできます。

var base = document.getElementById('/a/b/c');
while(base.parentElement.removeChild(base.nextSibling))​ // Remove the nextSiblings while they exist.

于 2013-01-03T10:46:53.983 に答える
1

これには2つの重要なステップがあります。

  1. 削除する要素を選択します
  2. それらを削除します

ステップ1は2つの部分に分けることができ、保持する最後の要素への参照を取得してから、その後に続くすべての兄弟のリストを取得します。ステップ2は.remove()関数を使用するだけです。

$(document.getElementById('/a/b/c')).nextAll().remove();
于 2013-01-03T10:48:04.097 に答える
1

セレクターに jquery を引き続き使用できますが、次のように id をエスケープする必要があります。

$("#\\/a\\/b\\/c")

次に、次のような div を選択するだけです。

$("#\\/a\\/b\\/c").nextAll().remove();

http://jsfiddle.net/8mMJq/

セレクターの特殊文字に関する詳細情報: http://api.jquery.com/category/selectors/

于 2013-01-03T10:54:24.503 に答える
0

これを試して :

$("#\\/a\\/b\\/c").nextAll().remove();

JsFiddle : http://jsfiddle.net/QcvWQ/

于 2013-01-03T10:55:56.323 に答える
-2

まず、ID を「/a/b/c」から「abc」に変更してから、次のコマンドを実行します。

$("#abc").nextAll().each(function () { $(this).remove());});
于 2013-01-03T10:53:05.657 に答える