简体   繁体   English

如何选择另一个元素(e)的一个子元素(se),但不包括所选子元素(sse)的一个子元素?

[英]How to select an sub-element (se) of another element (e), but do not include one of sub-elements of selected sub-element (sse)?

Example: 例:

.element
  |
  |-.subelement
      |
      |-.subsubelement1
      |-.subsubelement2
      |-.subsubelement3
      |-.non-desired-subsubelement
      |-.subsubelement4

So how not to list all desired subsubelements (eg is unknown), but still receive an aggregated element .subelement of its subelements .subsubelementX without .non-desired-subsubelement : 那么怎么不列出所有需要的subsubelements(如不明),但仍收到汇总元素.subelement及其子元素的.subsubelementX没有.non-desired-subsubelement

NOT an array : [subsubelement1, subsubelement2, subsubelement3, subsubelement4] 不是数组[subsubelement1, subsubelement2, subsubelement3, subsubelement4]

BUT an aggregate element : subelement , without non-desired-subsubelement as its descendant: BUT的集合体元件subelement ,没有non-desired-subsubelement作为其后代:

  .subelement
    |
    |-.subsubelement1
    |-.subsubelement2
    |-.subsubelement3
    |-.subsubelement4

I thought about this: 我想到了这个:

$('.element .subelement:not([class^="non-desired-subsubelement"])') // selects subelements which has no class non-desired-subsubelement

would be nice to have something like: 拥有这样的东西会很好:

$('.element .subelement:not(>>this<<:has([class^="non-desired-subelement"]))')

ie uses negative "has" selector; 即使用否定的“有”选择器; or something like: 或类似的东西:

$('.element .subelement:has-not([class^="non-desired-subelement"])') // much nicer

Or is it easier to get the .subelement and than remove the .non-desired-subsubelement , so to do it in two steps? 还是获得.subelement并比删除.non-desired-subsubelement 更容易 ,所以分两步进行?

var subelement = $('.element .subelement');
subelement.remove('.non-desired-subsubelement');

May be there is still a complex selector? 可能还有一个复杂的选择器?

您可以尝试以下方法:

$('.element .subelement [class^="sub"])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM