簡體   English   中英

如何使用jQuery將類添加到元素的特定同級中?

[英]How to add class to a specific siblings of element using jquery?

我想查找某個元素是否具有class lesson_read然后將found的類添加.course_section上方的.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課程添加到每個課程部分。

您需要使用.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> 

您必須使用prevAll()來獲取所有具有course_section類的先前兄弟姐妹,然后必須使用.last()來獲取lesson_read類的上一個先前兄弟姐妹(course_section)

 $('.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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM