我想删除一些傻瓜。我尝试如下。 但不行。为什么?以及如何解决?
<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();
答案 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步只使用.remove()
函数。
$(document.getElementById('/a/b/c')).nextAll().remove();
答案 2 :(得分:1)
你仍然可以使用jquery作为你的选择器,但你需要像这样转义id:
$("#\\/a\\/b\\/c")
然后你只需要选择以下任何div:
$("#\\/a\\/b\\/c").nextAll().remove();
有关选择器中特殊字符的更多信息:http://api.jquery.com/category/selectors/
答案 3 :(得分:0)
答案 4 :(得分:-2)
首先将id从“/ a / b / c”更改为ie“abc”然后运行
$("#abc").nextAll().each(function () { $(this).remove());});