Show/Hide jQuery,显示所有 div 而不是被点击的 div

Show/Hide jQuery, shows all of the divs instead of one that was clicked

我正在尝试使用 jQuery show div,但我遇到的问题是显示了所有具有相同 class 的 divs 而不是被点击的那个。

所以基本上,一旦 VIEW MORE 被点击,div 应该是可见的,VIEW MORE 应该被隐藏,然后如果 VIEW MORE 在另一个 div 被点击,同样的事情也应该发生在 div 中。

$('.show-more').click(function() {
  $('.text-hidden').show();
  $(this).hide()
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="forms">
  <h2>New Forms</h2>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>
</div>
<span class="show-more">VIEW MORE</span>
<div class="forms text-hidden">
  <ul>
    <li>4</li>
    <li>5</li>
    <li>6</li>
  </ul>
</div>

<div class="forms">
  <h2>Old Forms</h2>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>
</div>
<span class="show-more">VIEW MORE</span>
<div class="forms text-hidden">
  <ul>
    <li>4</li>
    <li>5</li>
    <li>6</li>
  </ul>
</div>

我不是 jquery/javascript 的专业人士,所以请多多包涵。

谢谢

使用.next()实现你想要的

$(this).next(".text-hidden").show()

这将 select 带有 class text-hidden 的下一个元素并显示它

示例如下。

$('.show-more').click(function() {
  $(this).next(".text-hidden").show();
  $(this).hide()
});
.text-hidden {
  display: none
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="forms">
  <h2>New Forms</h2>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>
</div>
<span class="show-more">VIEW MORE</span>
<div class="forms text-hidden">
  <ul>
    <li>4</li>
    <li>5</li>
    <li>6</li>
  </ul>
</div>

<div class="forms">
  <h2>Old Forms</h2>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>
</div>
<span class="show-more">VIEW MORE</span>
<div class="forms text-hidden">
  <ul>
    <li>4</li>
    <li>5</li>
    <li>6</li>
  </ul>
</div>

这将针对每个个匹配元素:

$('.text-hidden').show();

您想要的是从单击的元素遍历 DOM 以找到与该单击的元素相关的特定元素。从你的 HTML 看来,你想要的是 "next .text-hidden",它应该是这样的:

$(this).next('.text-hidden').show();