jQuery .remove不适用于嵌套元素

时间:2012-06-29 00:24:14

标签: jquery

我正在尝试简单地移除li中的所有嵌套ul元素,但它无效。为什么这段代码不起作用?我错过了什么?

HTML

<ul id="myul">
</ul>
<br/>
<button onclick="add();">add</button><br/>
<button onclick="remAll();">remove all</button>

JS

function add()
{
    $('#myul').append('<li>hello world</li>');
}

function remAll()
{
    $('#myul').remove('li');
}

http://jsfiddle.net/gPnxY/

4 个答案:

答案 0 :(得分:9)

相反,remove()的选择器参数是相关对象的过滤器。 在这种情况下,相关对象只是标识为myUl的单个元素,因此不包含任何<li>元素。

jsFiddle

$('#myul').find('li').remove();

$('#myul li').remove();

答案 1 :(得分:3)

jsFiddle here

这很好:

$('#myul').empty();

阅读更多精彩内容:http://api.jquery.com/empty/

此外:

$('#myul').find('li').remove();
$('#myul li').remove();
$('#myul').contents().remove();
$('#myul').html('');

答案 2 :(得分:0)

或做:

function remAll()
{
    $('#myul').html("");
}

演示http://jsfiddle.net/Xq4q8/1/

答案 3 :(得分:0)

在我的情况下,我有从内容对象生成的ID值,值为'。'在他们中......例如:

{ id : 'abc1.ec' }

这使我的.remove()调用在无效的id字符串上失败。一旦我弄明白了并生成了有效的ID字符串,一切正常。

相关问题