Как добавить класс к определенным братьям и сестрам элемента, используя jquery? - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу выяснить, есть ли у элемента класс lesson_read, а затем добавить класс found к .course_section, который расположен сразу над ним.но не добавляйте класс к .course_section, который идет ниже.вот HTML

<table class="table">               
    <tbody>
        <tr class="course_section "><!-- this should have class "found" -->
            <td colspan="4">Introduction to AEM</td>
        </tr>
        <tr class="course_lesson lesson_read">
            <td class="curriculum-icon"><i class="icon-play"></i></td>
            <td><a href="#">Introduction to AEM</a></td>
            <td> </td>
            <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
        </tr>
        <tr class="course_lesson lesson_read">
            <td class="curriculum-icon"><i class="icon-play"></i></td>
            <td><a href="#">Installing AEM</a></td>
            <td> </td>
            <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
        </tr>
        <tr class="course_lesson">
            <td class="curriculum-icon"><i class="icon-task"></i></td>
            <td>AEM Installation Quiz</td>
            <td> </td>
            <td><span class="time"><i class="fa fa-clock-o"></i> Unlimited</span></td>
        </tr>
        <tr class="course_section">
            <td colspan="4">AEM Environment</td>
        </tr>
        <tr class="course_lesson">
            <td class="curriculum-icon"><i class="icon-text-document"></i></td>
            <td>AEM Instances</td>
            <td> </td>
            <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
        </tr>
        <tr class="course_lesson">
            <td class="curriculum-icon"><i class="icon-play"></i></td>
            <td>Developer Tools</td>
            <td> </td>
            <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
        </tr>
    </tbody>
</table>

Я пробовал это

jQuery('.course_section').each(function() {
    var c='';
    jQuery(this).siblings().each(function() {
        if(jQuery(this).hasClass('lesson_read')){
            c='found';      
        }      
    });
    if(c=='found'){
        jQuery(this).addClass(c);   
    }
});

Однако это добавляет класс found к каждому разделу курса.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Вы должны использовать prevAll () , чтобы получить всех предыдущих братьев и сестер, которые имеют класс course_section , затем использовать .last () , чтобы получить последних предыдущих братьев и сестер(Course_section) класса Lesson_read

$('.lesson_read').prevAll('.course_section').last().addClass('found');
.found{
color:red}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table">               
    <tbody>
        <tr class="course_section "><!-- this should have class "found" -->
            <td colspan="4">Introduction to AEM</td>
        </tr>
        <tr class="course_lesson">
            <td class="curriculum-icon"><i class="icon-play"></i></td>
            <td><a href="#">Introduction to AEM</a></td>
            <td> </td>
            <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
        </tr>
        <tr class="course_lesson lesson_read">
            <td class="curriculum-icon"><i class="icon-play"></i></td>
            <td><a href="#">Installing AEM</a></td>
            <td> </td>
            <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
        </tr>
        <tr class="course_lesson">
            <td class="curriculum-icon"><i class="icon-task"></i></td>
            <td>AEM Installation Quiz</td>
            <td> </td>
            <td><span class="time"><i class="fa fa-clock-o"></i> Unlimited</span></td>
        </tr>
        <tr class="course_section">
            <td colspan="4">AEM Environment</td>
        </tr>
        <tr class="course_lesson">
            <td class="curriculum-icon"><i class="icon-text-document"></i></td>
            <td>AEM Instances</td>
            <td> </td>
            <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
        </tr>
        <tr class="course_lesson">
            <td class="curriculum-icon"><i class="icon-play"></i></td>
            <td>Developer Tools</td>
            <td> </td>
            <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
        </tr>
    </tbody>
</table>
0 голосов
/ 26 сентября 2018

Вам необходимо использовать .prev(), который выбирает предшествующего брата элемента.

$(".lesson_read").prev(".course_section").addClass("found");

$(".lesson_read").prev(".course_section").addClass("found");
.found {color:red}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table">               
  <tbody>
    <tr class="course_section"><!-- this should have class "found" -->
      <td colspan="4">Introduction to AEM</td>
    </tr>
    <tr class="course_lesson lesson_read">
      <td class="curriculum-icon"><i class="icon-play"></i></td>
      <td><a href="#">Introduction to AEM</a></td>
      <td> </td>
      <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
    </tr>
    <tr class="course_lesson lesson_read">
      <td class="curriculum-icon"><i class="icon-play"></i></td>
      <td><a href="#">Installing AEM</a></td>
      <td> </td>
      <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
    </tr>
    <tr class="course_lesson">
      <td class="curriculum-icon"><i class="icon-task"></i></td>
      <td>AEM Installation Quiz</td>
      <td> </td>
      <td><span class="time"><i class="fa fa-clock-o"></i> Unlimited</span></td>
    </tr>
    <tr class="course_section">
      <td colspan="4">AEM Environment</td>
    </tr>
    <tr class="course_lesson">
      <td class="curriculum-icon"><i class="icon-text-document"></i></td>
      <td>AEM Instances</td>
      <td> </td>
      <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
    </tr>

    <tr class="course_lesson">
      <td class="curriculum-icon"><i class="icon-play"></i></td>
      <td>Developer Tools</td>
      <td> </td>
      <td><span class="time"><i class="fa fa-clock-o"></i> 00:00:00</span></td>
    </tr>

  </tbody></table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...