как добавить класс к элементу, если у любого из дочерних элементов есть определенный класс в jquery?

#javascript #html #jquery #css

#javascript #HTML #jquery #css

Вопрос:

как добавить класс к элементу, если у любого из дочерних элементов есть определенный класс в jquery?У меня есть markup

 <section class="cc01 cc01v0 cpad" >
   <div class="cc01w1 cwidth">
      <div class="ocode ocode-initialized">
         <div class="ocode-bttn" data-success="Copied to Clipboard" data-error="Error: Could not Copy">
            <div><a href="#copy">Copy</a></div>
            <div class="ocode-success">Copied to Clipboard</div>
            <div class="ocode-error">Error: Could not Copy</div>
         </div>
         <textarea readonly="readonly" tabindex="-1"></textarea>
      </div>
   </div>
</section>
  

. Я хочу addClass (‘проверить’) section element , есть ли у кого-либо из дочерних ocode элементов класс.Если у какого-либо из дочерних элементов есть класс ocode , я хочу добавить класс test в раздел.

https://jsbin.com/cajavivuru/edit?html ,js, вывод

 jQuery(document).ready(function($) {
    'use strict';
    console.log('cgggggggg11111');
        console.log('cgggggggg');
        $('.cc01.cc01v0.cpad').each(function () {
           console.log('===========');
          
          if($(this).children('ocode').hasClass('ocode')){
            $(this).addClass('test')
          }
           //console.log($(this).css({'background':'red'}))
        });

        
});
  

Ответ №1:

Наоборот, вы можете получить все элементы с .ocode помощью class, а с помощью $().parents() function вы можете получить все родительские элементы этого .ocode селектора.

И среди этих родительских элементов вы можете проверить их tagName и для соответствующего SECTION tagName добавить .test class .

 jQuery(document).ready(function($) {
  $(".ocode").each(function () {
    $(this).parents().each(function () {
      if($(this).prop("tagName") === "SECTION") {
        $(this).addClass("test");
      }
    });
  });
});  
 <section class="cc01 cc01v0 cpad">
  <div class="cc01w1 cwidth">
    <div class="ocode ocode-initialized">
      <div class="ocode-bttn" data-success="Copied to Clipboard" data-error="Error: Could not Copy">
        <div><a href="#copy">Copy</a></div>
        <div class="ocode-success">Copied to Clipboard</div>
        <div class="ocode-error">Error: Could not Copy</div>
      </div>
      <textarea readonly="readonly" tabindex="-1"></textarea>
    </div>
  </div>
</section>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>