jQuery删除所有元素,直到找到id='whatever'的元素

4
需要从起始标记中删除所有代码,直到下一个


我尝试过这个。
$('#page1').remove();

但这只能删除标签之间的内容。

我不知道除了page1和page2标签之间可能还有什么,因为代码是根据页面上表单元素的类型动态添加的。

<div id='page1' name='page1'>
 ...
</div> 
<div id='another element' />
<div id=yet 'another element' />
...
<!-- Need to remove from page1 to here -->
<div id='page2' name='page2'>
 ...
</div>

在上面的例子中,您想要删除 page1,另一个元素,还有另一个元素吗? - neebz
5个回答

16

假设你想要删除page1及其之后的所有内容直到page2,你可以这样做:

$("#page1").nextUntil("#page2").andSelf().remove();

jsfiddle上的示例


哇,我从来不知道有nextUntil和andSelf方法。这肯定是最简单的方法了。 - neebz
绝对惊人。我要找到一种方法来使用它们,只是为了使用它们! - Xyan Ewing

0

可以考虑这样做:

var last = null;
var curr = $('#page1');
while (curr.attr('id') != 'page2') {
    if (last != null) {
        last.remove();
    }
    last = curr;
    curr = curr.next();
}
if (last != null) {
    last.remove();
}

0
$('[id^="#another"]:not([id^="#page"])').each(function()
{
   $(this).remove();
});

删除所有以another开头的元素,但不包括以page开头的元素。


0
如果它们是嵌套的,而你想删除“page1” div 中的子元素,你可以尝试这样做:
$('#page1' > div).remove();

或者,如果你想有选择地这样做 - 只删除页面1中的某些div - 你可以给它添加一个类并执行相同类型的操作。

你是不是想说 $('#page1 > div').remove(); - Delan Azabani

0

当您需要在 JQuery 中传递“ID”时,可以轻松使用“class”代替。对于可能形成一组要删除的控件的每个标记,添加 class="removeSet1"。然后在需要时调用 $(".revoveSet1").remove();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接