1

根据here,jquery的删除功能应该像这样工作..

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

在这个例子中尝试。

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

4 回答 4

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>元素,然后只删除那些与选择器匹配的元素。

示例 jsFiddle

于 2012-09-06T08:58:05.017 回答
1

您正在尝试删除既是 div 又是 p.unwanted 的东西。remove() 中的过滤器应用于当前节点集,在本例中为所有 div 元素。

改用子集:

$('div').children().remove('p.unwanted');
于 2012-09-06T09:01:26.610 回答
0

您应该使用以下内容:

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

参数remove作为过滤器起作用。因此,在这里,您首先选择所有<p>元素,然后删除具有 class 的元素unwanted

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

于 2012-09-06T08:57:47.293 回答
0

试试这个

 $(document).ready(function() {
    $('div').find('p.unwanted').attr('class', '');
});
于 2012-09-06T09:06:58.330 回答