单个slideToggle()用于相同的元素

时间:2016-06-11 18:40:39

标签: javascript jquery toggle forum mybb

我有这段代码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);
    });
});

当我点击按钮时,所有组件显示或隐藏但我想隐藏/只显示我选择的这个元素。我认为我可以在第3行使用 $(this).childern ,但如果你看到 .block isn&#39; ta btn-slide 子女。那么我怎样才能实现我的目标呢?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

用这个

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

答案 2 :(得分:0)

如果可能,您可以将另一个唯一的类添加到SELECT * FROM userdetails usr1 WHERE (n-1) = ( SELECT COUNT(DISTINCT(usr2.salary )) FROM userdetails usr2 WHERE usr2.salary > usr1.salary ) block,并使用切换事件到该类。

block-new

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