Search code examples
javascriptjqueryjquery-selectors

JQuery: How to select a class without elements of a parent with id?


I have a ul element:

<ul id="listA">
  <li class="myclass">1</li>
  <li class="myclass">2</li>
  <li class="myclass">3</li>
  <li class="myclass">4</li>
  <li class="myclass">5</li>
  <li>
    <ul id="listB">
      <li class="myclass">B1</li>
      <li class="myclass">B2</li>
      <li class="myclass">B3</li>
      <li class="myclass">B4</li>
    </ul>
  </li>
</ul>

I want to get all elements by class name myclass which are not in ul with ID listB.

My tries with $('.myclass:not ul #listB') wont work.


Solution

  • You can use not as follows:

    const res = $('*:not(ul#listB) > .myclass');
    
    console.log(res);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <ul id="listA">
      <li class="myclass">1</li>
      <li class="myclass">2</li>
      <li class="myclass">3</li>
      <li class="myclass">4</li>
      <li class="myclass">5</li>
      <li>
        <ul id="listB">
          <li class="myclass">B1</li>
          <li class="myclass">B2</li>
          <li class="myclass">B3</li>
          <li class="myclass">B4</li>
        </ul>
      </li>
    </ul>