排除具有特定类的父元素

时间:2013-06-28 10:12:07

标签: jquery jquery-selectors

我有一个脚本可以选择特定元素下的所有标记,但它也会排除脚本标记。所以现在它如下。

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

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

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

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

请帮忙。

3 个答案:

答案 0 :(得分:2)

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

  • 脚本
  • 公开dontneed
  • 的元素
  • 公开dontneed类的元素的后代。

所以你可以写:

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

答案 1 :(得分:1)

你可能必须

$(myElement).find("*:not(script)").filter(function(){
    return $(this).closest('.dontneed').length == 0
})

答案 2 :(得分:1)

:父母不会这样做,除非它意味着“元素是父母(有孩子)”

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

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