jquery删除从另一个元素中删除

时间:2012-09-06 08:56:19

标签: javascript jquery

根据here,jquery的remove函数应该像这样工作..

$('div').remove('selector'); 

我正在尝试in this example

HTML:

<div class="wrapper">
    <p class="unwanted">This should be removed</p>
    <p class="retained">This will remain</p>
</div>​

JavaScript的:

jQuery(document).ready(function($) {
    $('div').remove('p.unwanted'); //not working
    //$('p.unwanted').remove(); //this works
});

它不起作用。我做错了什么?

4 个答案:

答案 0 :(得分:1)

你误解了文档的内容。它不是在寻找与匹配选择器匹配的匹配元素的后代的元素,它只是将已经匹配的元素集合过滤到与选择器匹配的元素,然后将它们删除。

如果你有这个HTML:

<div class="wanted">Some text</div>
<div class="wanted">Some more text</div>
<div class="unwanted">Some unwanted text</div>

然后执行这个jQuery:

$('div').remove('.unwanted');

然后它只删除第三个<div>(其上带有unwanted类的那个),因为它首先选择所有 <div>元素,并且然后只删除与选择器匹配的那些。

Example jsFiddle

答案 1 :(得分:1)

你正试图删除div和p.unwanted之类的东西。 remove()中的过滤器应用于当前节点集,在本例中为所有div元素。

改为使用子集:

$('div').children().remove('p.unwanted');

答案 2 :(得分:0)

您应该使用以下内容:

$('p').remove('.unwanted');

remove中的参数作为过滤器。在这里,您首先选择所有<p>元素,然后仅删除 那些具有类unwanted的元素。

DEMO: http://jsfiddle.net/qwXSw/1/

答案 3 :(得分:0)

试试这个

 $(document).ready(function() {
    $('div').find('p.unwanted').attr('class', '');
});