如何将document.getElementById与jquery下一个兄弟选择器一起使用

时间:2013-01-03 10:43:29

标签: javascript jquery jquery-selectors

我想删除一些傻瓜。我尝试如下。 但不行。为什么?以及如何解决?

<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();

5 个答案:

答案 0 :(得分: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.
}

<强> Working example

您还可以提高效率:

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

<强> Example

答案 1 :(得分:1)

这有两个关键步骤。

  1. 选择要删除的元素
  2. 删除它们
  3. 步骤1可以分为两部分,获取对要保留的最后一个元素的引用,然后获取其后面的所有兄弟元素的列表。第2步只使用.remove()函数。

    $(document.getElementById('/a/b/c')).nextAll().remove();
    

答案 2 :(得分:1)

你仍然可以使用jquery作为你的选择器,但你需要像这样转义id:

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

然后你只需要选择以下任何div:

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

http://jsfiddle.net/8mMJq/

有关选择器中特殊字符的更多信息:http://api.jquery.com/category/selectors/

答案 3 :(得分:0)

试试这个:

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

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

答案 4 :(得分:-2)

首先将id从“/ a / b / c”更改为ie“abc”然后运行

$("#abc").nextAll().each(function () { $(this).remove());});