【问题标题】:Single slideToggle() for the same elements相同元素的单个 slideToggle()
【发布时间】:2016-06-11 18:40:39
【问题描述】:

我有这段代码 HTML:

<div>
    <div>
        <button class="btn-slide"><span class="fa fa-caret-down" aria-hidden="true"></span></button>
    </div>
    <div class="block">
    ...
    </div>
</div>

我的论坛模板中有几个这样的元素。我使用标准的 js toggle() 脚本:

$(document).ready(function() {
    $('btn-slide').click(function() {
        $('.block').slideToggle(50);
    });
});

当我单击按钮时,所有组件都会显示或隐藏,但我只想隐藏/显示我选择的这个元素。我以为我可以在第三行使用 $(this).childern 但如果你看到 .block 不是 btn-slide childern .那么如何才能实现我想要的呢?

【问题讨论】:

    标签: javascript jquery toggle forum mybb


    【解决方案1】:

    您可以使用 parents() next()

    $(document).ready(function() {
      $('.btn-slide').click(function() {
        $(this)
          // get all div in parent level
          .parents('div')
          // get immediate sibling with class block after the element 
          .next('.block')
          .slideToggle(50);
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <div>
      <div>
        <button class="btn-slide"><span class="fa fa-caret-down" aria-hidden="true"></span>
        </button>
      </div>
      <div class="block">
        ...
      </div>
    </div>
    
    <div>
      <div>
        <div>
          <div>
            <button class="btn-slide">
              <span class="fa fa-caret-down" aria-hidden="true"></span>
            </button>
          </div>
        </div>
      </div>
      <div class="block">
        ...
      </div>
    </div>

    【讨论】:

    • 好的,这很有帮助,但如果我有另一个 div 结构怎么办?像这样的东西:jsfiddle.net/t7reu8d1 ?
    【解决方案2】:

    用这个改变你的js

    $(document).ready(function() {
        $('.btn-slide').click(function() {
        $(this.nextSibling.parentNode.nextElementSibling).slideToggle(50);
        });
    });
    

    【讨论】:

      【解决方案3】:

      如果可能,您可以向block 添加另一个独特的类,例如block-new,并对该类使用切换事件。

      $(document).ready(function() {
          $('.btn-slide').click(function() {
              $('.block-new').slideToggle(50);
          });
      });
      

      jsfiddle - https://jsfiddle.net/dhananjaymane11/t7reu8d1/1/

      【讨论】:

        猜你喜欢
        • 2023-03-20
        • 1970-01-01
        • 2010-11-21
        • 2011-07-25
        • 1970-01-01
        • 1970-01-01
        • 2011-05-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多