jQuery删除:$(“...”)。remove()vs.remove(“...”)

时间:2012-06-14 03:05:37

标签: jquery

阅读文档时,我希望$("#wrap2").remove(".error")删除.error中的所有#wrap2元素。然而,看看这个JSFiddle: http://jsfiddle.net/hCGUS/ 似乎并非如此?

$(function() {
    $("#wrap1 .error").remove(); // works 
    $("#wrap2").remove(".error"); // fails ...
})​

5 个答案:

答案 0 :(得分:8)

正如文档所述,要删除的selector参数是

  

一个选择器表达式,用于过滤匹配元素集   除去。

第一个示例是您应该用来删除ID为error的元素中包含的类wrap1的元素。

第二个示例将找到标识为wrap2的元素,然后为具有类error的元素过滤该集合,并删除这些元素。也就是说,它只会删除与#wrap2.error匹配的元素。

答案 1 :(得分:3)

The docs说,当传递一个参数时,它作为一个过滤器对它被调用的包装集合起作用,所以如果你有一个jQuery集,但只想删除集合中的一些元素,你可以传递一个选择器来删除那些。

答案 2 :(得分:3)

根据jQuery文档。我想

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

等于:

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

表示元素具有标识wrap2和类error

答案 3 :(得分:1)

建立x1a4的答案,$("wrap2")只包含一个元素,而不包含任何子元素。如果你这样做了:

$("wrap2 *").remove(".error")

它的效果与您的工作版本相同。

答案 4 :(得分:-3)

请使用removeClass而不是删除

$( “#wrap2”)removeClass( “错误”);