以li元素为目标,除非前面有非li元素



除了在<p class="Notes>元素之后的li元素之外,我如何针对它们?换言之,我想针对Steps而不是Notes。

我试着在OL中添加一个我想从选择中排除的类,但我想出的代码不起作用。

(顺便说一句,重组html不是一种选择)

('#a > ol > li.P-List-number').not(':has("ul.Notes")')

<div id="a">
<h2 class="task">Blah, blah, blah</h2>
    <p class="Body">Yada, yada, yada:</p>
        <ol>
          <li class="P-List-number">Step 1...</li>
          <li class="P-List-number">Step 2...</li>
          <li class="P-List-number">Step 3...</li>
       </ol>
       <p class="Notes>NOTES</p>
       <ol class="Notes">
          <li class="P-List-number">Note 1</li>
          <li class="P-List-number">Note 2</li>
       </ol>
</div>  

您可以使用p:not(.Notes),然后使用next()选择ol,使用children() 选择li

$('p:not(.Notes)').next('ol').children('li').css('color', 'blue');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="a">
  <h2 class="task">Blah, blah, blah</h2>
  <p class="Body">Yada, yada, yada:</p>
  <ol>
    <li class="P-List-number">Step 1...</li>
    <li class="P-List-number">Step 2...</li>
    <li class="P-List-number">Step 3...</li>
  </ol>
  <p class="Notes">NOTES</p>
  <ol class="Notes">
    <li class="P-List-number">Note 1</li>
    <li class="P-List-number">Note 2</li>
  </ol>
</div>

或者只是p:not(.Notes) + ol li

$('p:not(.Notes) + ol li').css('color', 'blue');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="a">
  <h2 class="task">Blah, blah, blah</h2>
  <p class="Body">Yada, yada, yada:</p>
  <ol>
    <li class="P-List-number">Step 1...</li>
    <li class="P-List-number">Step 2...</li>
    <li class="P-List-number">Step 3...</li>
  </ol>
  <p class="Notes">NOTES</p>
  <ol class="Notes">
    <li class="P-List-number">Note 1</li>
    <li class="P-List-number">Note 2</li>
  </ol>
</div>

最新更新