添加 class 到 div 如果 div 有特定的 class

Add class to the div if div have specific class

我在这里尝试在 blog-post div 中添加 class alignright 如果 div 具有特定的 class blog-post 但是下面的代码不起作用帮我解决这个问题。

<div class="switches">
    <span class="blog off">Blog</span>
</div>
<div class="timeline">
    <script>
    $(".switches span").click(function(){
        $(this).closest("span").toggleClass('off');
        if ( $( this ).hasClass( "blog off" ) ) {
            $('.timeline').first().removeClass('timeline').  
            children('div').hasClass('blog-post').addClass('alignright');            
        }
    });
    </script>
    <div class="single-post single-post blog-post"> 
        <div class="single-post single-post web-post"></div>
    </div>
</div>

.hasClass() 函数并没有按照您的代码预期的那样进行操作。它总是 returns 一个布尔值。你想要 .filter():

 $('.timeline').first().removeClass('timeline').children('div').filter('.blog-post').addClass('alignright');
    <div class="switches">
       <span class="blog off">Blog</span>
    </div>
    <div class="timeline">
         <div class="single-post single-post blog-post"></div>
         <div class="single-post single-post web-post"></div>             
    </div>



   <script>
        $(".switches span").click(function(){
            $(this).toggleClass('off');

            if ($(this).hasClass("blog off")) {
                var mydiv = $(this).parent().next();
                mydiv.removeClass('timeline');
                mydiv.find('div.blog-post').addClass('alignright');

            }
        });
   </script>

问题是 hasClass() 方法,它会 return 一个布尔值,所以之后调用 addClass 会失败

$(".switches span").click(function () {
    //this is the span
    $(this).toggleClass('off');
    if ($(this).hasClass("off")) {
        $(this).next('div.blog-post').addClass('alignright');
    }
});