0

我想删除一些 silblings。我尝试如下。但不工作。为什么?以及如何解决?

<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

有两个关键步骤。

  1. 选择要删除的元素
  2. 删除它们

步骤 1 可以分为两部分,获取对要保留的最后一个元素的引用,然后获取其后所有兄弟元素的列表。第 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 回答