javascript 为多个元素添加和移除类

uelo1irk  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(162)

使用css和javascript,我设计了一个可转换的按钮,点击时可以切换为打开和关闭。
我的代码工作正常,但我想当一个按钮被点击,它从关闭到打开的变化,所有其他按钮在任何状态,他们在返回到第一个(关闭)状态。
我之所以要创建这样一个状态,是因为我想将代码放在一个滑块中,当用户在几个幻灯片中单击按钮时,按钮将以错误的状态显示。

$('body').on('click', '.icon_product', function () {

if (this.classList.contains("icon_product")) {
    
    $(this).toggleClass("change_icon-product");

} else {
  
    $(this).removeClass("change_icon-product");

}

});
.icon_product {
    display: block;
    cursor: pointer;
    position: relative;
    padding: 15px;
    margin-top: 0px;
}

.icon-line1_product,
.icon-line2_product {
    width: 35px;
    height: 5px;
    background-color: #f00;
    margin: 6px 0;
    border-radius: 10px;
    transition: all 0.6s ease-in-out;
    -webkit-transition: all 0.6s ease-in-out;
    -moz-transition: all 0.6s ease-in-out;
    -o-transition: all 0.6s ease-in-out;
    -ms-transition: all 0.6s ease-in-out;
}

.icon-line2_product {
    transform: rotate(90deg) translate(-11px, 0px);
    -webkit-transform: rotate(90deg) translate(-11px, 0px);
    -moz-transform: rotate(90deg) translate(-11px, 0px);
    -o-transform: rotate(90deg) translate(-11px, 0px);
    -ms-transform: rotate(90deg) translate(-11px, 0px);
}

.change_icon-product .icon-line1_product {
    transform: rotate(45deg) translate(8px, 0px);
    -webkit-transform: rotate(45deg) translate(8px, 0px);
    -moz-transform: rotate(45deg) translate(8px, 0px);
    -o-transform: rotate(45deg) translate(8px, 0px);
    -ms-transform: rotate(45deg) translate(8px, 0px);
}

.change_icon-product .icon-line2_product {
    transform: rotate(-45deg) translate(8px, 0px);
    -webkit-transform: rotate(-45deg) translate(8px, 0px);
    -moz-transform: rotate(-45deg) translate(8px, 0px);
    -o-transform: rotate(-45deg) translate(8px, 0px);
    -ms-transform: rotate(-45deg) translate(8px, 0px);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section>
        <div id="main-content_product">
            <div class="icon_product">
                <div class="icon-line1_product test"></div>
                <div class="icon-line2_product test"></div>
            </div>
        </div>

        <div id="main-content_product">
            <div class="icon_product">
                <div class="icon-line1_product test"></div>
                <div class="icon-line2_product test"></div>
            </div>
        </div>

        <div id="main-content_product">
            <div class="icon_product">
                <div class="icon-line1_product test"></div>
                <div class="icon-line2_product test"></div>
            </div>
        </div>

        <div id="main-content_product">
            <div class="icon_product">
                <div class="icon-line1_product test"></div>
                <div class="icon-line2_product test"></div>
            </div>
        </div>
    </section>
sqxo8psd

sqxo8psd1#

使用siblings()查找父节点的兄弟节点并从.icon_product中删除类。

$('body').on('click', '.icon_product', function() {
  $(this).toggleClass("change_icon-product");
  $(this).parent().siblings().find('.icon_product').removeClass("change_icon-product");
});
.icon_product {
  display: block;
  cursor: pointer;
  position: relative;
  padding: 15px;
  margin-top: 0px;
}

.icon-line1_product,
.icon-line2_product {
  width: 35px;
  height: 5px;
  background-color: #f00;
  margin: 6px 0;
  border-radius: 10px;
  transition: all 0.6s ease-in-out;
  -webkit-transition: all 0.6s ease-in-out;
  -moz-transition: all 0.6s ease-in-out;
  -o-transition: all 0.6s ease-in-out;
  -ms-transition: all 0.6s ease-in-out;
}

.icon-line2_product {
  transform: rotate(90deg) translate(-11px, 0px);
  -webkit-transform: rotate(90deg) translate(-11px, 0px);
  -moz-transform: rotate(90deg) translate(-11px, 0px);
  -o-transform: rotate(90deg) translate(-11px, 0px);
  -ms-transform: rotate(90deg) translate(-11px, 0px);
}

.change_icon-product .icon-line1_product {
  transform: rotate(45deg) translate(8px, 0px);
  -webkit-transform: rotate(45deg) translate(8px, 0px);
  -moz-transform: rotate(45deg) translate(8px, 0px);
  -o-transform: rotate(45deg) translate(8px, 0px);
  -ms-transform: rotate(45deg) translate(8px, 0px);
}

.change_icon-product .icon-line2_product {
  transform: rotate(-45deg) translate(8px, 0px);
  -webkit-transform: rotate(-45deg) translate(8px, 0px);
  -moz-transform: rotate(-45deg) translate(8px, 0px);
  -o-transform: rotate(-45deg) translate(8px, 0px);
  -ms-transform: rotate(-45deg) translate(8px, 0px);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section>
  <div id="main-content_product">
    <div class="icon_product">
      <div class="icon-line1_product test"></div>
      <div class="icon-line2_product test"></div>
    </div>
  </div>

  <div id="main-content_product">
    <div class="icon_product">
      <div class="icon-line1_product test"></div>
      <div class="icon-line2_product test"></div>
    </div>
  </div>

  <div id="main-content_product">
    <div class="icon_product">
      <div class="icon-line1_product test"></div>
      <div class="icon-line2_product test"></div>
    </div>
  </div>

  <div id="main-content_product">
    <div class="icon_product">
      <div class="icon-line1_product test"></div>
      <div class="icon-line2_product test"></div>
    </div>
  </div>
</section>

相关问题