如何使用jQuery删除" li_1"下的所有元素? (但不能删除li_1)
<ul id="ul_1">
<li id="li_1">1.1 //want to delete all its child elements
<ul id="ul_1.1">
<li id="li_1.1.1">1.1.1</li>
<li id="li_1.1.2">1.1.2
<ul id="ul_1.1.2">
<li id="li_1.1.2.1">1.1.2.1</li>
<li id="li_1.1.2.2">1.1.2.2</li>
</ul>
</li>
</ul>
</li>
<li id="li_2">1.2</li>
<li id="li_3">1.3</li>
</ul>
答案 0 :(得分:3)
可能是你的标记有bug。实际上你所指的ul不是li_1
的孩子。首先修复标记并尝试使用empty
方法删除其所有子代,从DOM中删除匹配元素集的所有子节点。
标记更改
<ul id="ul_1">
<li id="li_1">1.1 //want to delete all its child elements
<ul id="ul_1.1">
<li id="li_1.1.1">1.1.1</li>
<li id="li_1.1.2">1.1.2
<ul id="ul_1.1.2">
<li id="li_1.1.2.1">1.1.2.1</li>
<li id="li_1.1.2.2">1.1.2.2</li>
</ul>
</li>
</ul>
</li>
<li id="li_2">1.2</li>
<li id="li_3">1.3</li>
</ul>
的js
$('#li_1').empty();//will empty everything from this li element
如果您只想删除孩子ul
,请尝试此操作
$('#li_1 > ul').remove();
答案 1 :(得分:1)
您的标记不正确,您应该更改下面的标记,
<ul id="ul_1">
<li id="li_1">1.1 //want to delete all its child elements
<ul id="ul_1.1">
<li id="li_1.1.1">1.1.1</li>
<li id="li_1.1.2">1.1.2</li>
<ul id="ul_1.1.2">
<li id="li_1.1.2.1">1.1.2.1</li>
<li id="li_1.1.2.2">1.1.2.2</li>
</ul>
</ul>
</li> // <-- Moved your sublist #ul_1.1 inside the li #li_1
<li id="li_2">1.2</li>
<li id="li_3">1.3</li>
</ul>
将你的JS改为,
$('#li_1 ul').remove();
答案 2 :(得分:0)
我们可以清楚地看到您的li_1
元素没有任何子元素。如果您要删除<ul id="ul_1.1">
,只需使用$('#ul_1.1').remove();
即可。它将删除此元素及其所有子元素(实际上它们是元素的一部分)。
您可以使用一些自动化功能。例如,如果您有id
个li
元素,则可以编写$('#'+id).next().remove();
。
如果这是HTML中的错误,请参阅ShankarSangoli的答案。