切换下一个 div jquery 不工作

Toggle next div jquery not working

我想 show/hide 使用 JQuery 一个 div。我在一页上有几个这样的。我正在尝试编写一些东西,当单击 link 和 class "toggle" 时会触发。然后它将查找下一个 div,相对于单击的 link,class="showHide",然后根据其当前状态显示或隐藏它。

我遇到的问题是 .next() 函数。它似乎对我不起作用。

JS

$(document).on("click", ".toggle", function(event){
    event.preventDefault();
    $(this).next('.showHide').hide();
});

HTML

<div class="medium-12 columns">
  <h2>Lists</h2>
  <div class="medium-2 columns">
    <h3>Food type</h3>
  </div>
  <div class="medium-10 columns"><small class="toggle">Show / hide</small></div>
  <div class="medium-12 columns showHide">...</div>
</div>

如果我做类似 $(this).css("background", "red"); 的事情,它就可以正常工作。所以,我很确定是 .next('.showHide') 把我绊倒了。

我也用 .first() 试过 .nextAll('.showHide'),但也没用。

试试这个:

$(this).siblings('div.showHide').toggle();

jQuery的next() selects the "immediately following sibling" of the matched element. Similarly, nextAll()选择"all following siblings"。在您的代码中,两个元素(.trigger.showHide)不是兄弟姐妹。

为了使用 next(),我建议从 .trigger 元素遍历到其父元素 .medium-10,它是关联的 .showHide 元素的兄弟。

jQuery('.toggle').on('click', function() {
  jQuery(this).parent('.medium-10').next('.showHide').toggle();
});
.showHide {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="medium-12 columns">
  <h2>Lists</h2>
  <div class="medium-2 columns">
    <h3>Food type</h3>
  </div>
  <div class="medium-10 columns"><small class="toggle">Show / hide</small></div>
  <div class="medium-12 columns showHide">...</div>
  <div class="medium-10 columns"><small class="toggle">Show / hide</small></div>
  <div class="medium-12 columns showHide">...</div>
  <div class="medium-10 columns"><small class="toggle">Show / hide</small></div>
  <div class="medium-12 columns showHide">...</div>
</div>