每次点击添加类到单个div



我是编程新手。

我有多个兄弟div与相同的类和viewmore按钮。我想把类添加到div上,在视图上单击more按钮,但是一个一个地单击。所以第一个sibling-div将是可见的,并查看更多按钮。当用户点击按钮时,第二个sibling-div应该是可见的,然后再次点击第三个sibling-div应该是可见的,等等。

我没有访问html,所以我使用jQuery来添加viewmore按钮。

默认情况下,我使用CSS隐藏所有兄弟div。只有第一个div, view-more-btn按钮,当有活动类,他们将是可见的。

我尝试使用jQuery添加类,但它添加到所有div。

这是html

<div class="parent-div">
  <div class="sibling-div">
    /*content*/
  </div>
  <div class="sibling-div">
    /*content*/
  </div>
  <div class="sibling-div">
    /*content*/
  </div>
  <div class="sibling-div">
    /*content*/
  </div>
  <div class="sibling-div view-more">
    <a class="view-more-btn">View More</a>
  </div>
</div>
这是我的CSS
.parent-div .sibling-div{
  display: none;
}
.parent-div .sibling-div:first-child, .parent-div .sibling-div.active, .parent-div .sibling-div.view-more{
  display: block;
}
这是我的jQuery
$(document).ready(function(){
  var view_more = '<div class="sibling-div view-more"><a class="view-more-btn">View more</a></div>';
  $(".parent-div .sibling-div:last-child").after(view_more);
  $(".parent-div .view-more-btn").click(function(){
    /*Adds class to all sibling divs*/
    $(".parent-div .sibling-div").addClass("active");
    /*Also tried*/
    $(".parent-div .sibling-div:first-child").next().addClass("active");
    /*But it only adds class to the second sibling*/
    /*Also tried using loop*/
    var div_length = $(".parent-div .sibling-div").length();
    for(i=0; i <= div_length; i++){
      $(".parent-div .sibling-div").addClass("active");
    }
  });
});

我已经尝试了所有这些方法,但它不工作的方式我想要的。它将类添加到所有sibling-div,或者只是第二个sibling-div

可以使用

访问组中的下一个隐藏元素
$(".parent-div .sibling-div:hidden:first")

:hidden目标元素为不透明度或显示:none。:first是一个jQuery选择器,它的目标是匹配的第一项。

$(document).ready(function() {
  $('.parent-div').append('<div class="" view-more"><a class="view-more-btn" href="#">View more</a></div>');
  $(".parent-div .view-more-btn").click(function() {
    $(".parent-div .sibling-div:hidden:first").addClass("active");
  });
});
.parent-div .sibling-div {
  display: none;
}
.parent-div .sibling-div:first-child,
.parent-div .sibling-div.active,
.parent-div .sibling-div.view-more {
  display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent-div">
  <div class="sibling-div">
    /*content*/
  </div>
  <div class="sibling-div">
    /*content*/
  </div>
  <div class="sibling-div">
    /*content*/
  </div>
  <div class="sibling-div">
    /*content*/
  </div>
</div>

我建议在每个<div id="div-1" class="sibling-div">中添加一个id,以确保您在该div中所做的任何操作的准确性。

最新更新