2

我确实有一个脚本可以选择特定元素下的所有标签,它也排除了脚本标签。所以现在它如下。

$(myElement).find("*:not(script)").each(function(){

但我需要排除一个元素及其子元素。我不知道该怎么做。我尝试了以下方法,但它只跳过了带有dontneed类的元素,而不是它的子元素。

$('body').find("*:not(script):not(:parent.dontneed)")

$('body').find("*:not(script, :parent.dontneed)")

请帮忙。

4

3 回答 3

3

您可以将多个选择器传递给:not()。多个选择器应该匹配:

  • 脚本
  • dontneed暴露类的元素
  • dontneed暴露类的元素的后代。

所以你可以写:

$("body").find(":not(script, .dontneed, .dontneed *)")
于 2013-06-28T10:18:55.970 回答
1

你可能不得不

$(myElement).find("*:not(script)").filter(function(){
    return $(this).closest('.dontneed').length == 0
})
于 2013-06-28T10:18:17.807 回答
1

:parent 不会起作用,除非它意味着“元素是父母(有孩子)”

可能是 .find()*:not(script):not(.dontneed):not(.dontneed > *).find('*').not('script, .dontneed, .dontneed > *')

我更喜欢第二种解决方案。

于 2013-06-28T10:26:02.707 回答