简体   繁体   中英

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 :

NOT an array : [subsubelement1, subsubelement2, subsubelement3, subsubelement4]

BUT an aggregate element : subelement , without non-desired-subsubelement as its descendant:

  .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?

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

May be there is still a complex selector?

您可以尝试以下方法:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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