jQuery remove:$("...").remove()和.remove("...")的区别

3
阅读文档后,我期望$("#wrap2").remove(".error")#wrap2中删除所有.error元素。然而,查看这个JSFiddle:http://jsfiddle.net/hCGUS/,似乎并不是这样?
$(function() {
    $("#wrap1 .error").remove(); // works 
    $("#wrap2").remove(".error"); // fails ...
})​
5个回答

8
根据文档说明,要删除的选择器参数是
过滤匹配元素集合的选择器表达式。
第一个示例演示了如何删除具有id为wrap1的元素中包含class为error的元素。
第二个示例将查找具有id wrap2的元素,然后在该集合中过滤具有class error的元素,并删除这些元素。也就是说,它只会删除与#wrap2.error匹配的元素。

3

文档中指出,当传递参数时,它作为正在调用的包装集上的过滤器,因此如果您有一个jQuery集合,但只想删除集合中的一些元素,则可以传递选择器以仅删除这些元素。


3
根据 jQuery 文档,我认为:
$("#wrap2").remove(".error");

等于:

$("#wrap2.error").remove();

表示一个元素具有ID为wrap2和类为error的属性。

1
继承x1a4的答案,$("wrap2")只包含一个元素,而不是它的任何子元素。如果你这样做:
$("wrap2 *").remove(".error")

它将与您的工作版本完全相同。


-3
请使用removeClass代替remove。

$("#wrap2").removeClass("error");


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