单击按钮后如何显示下一张卡片并再次单击并再次显示下一张卡片到最后一张卡片并使用jquery提交?

Posted

技术标签:

【中文标题】单击按钮后如何显示下一张卡片并再次单击并再次显示下一张卡片到最后一张卡片并使用jquery提交?【英文标题】:How I can showing the next card after clicking button and click again and show next card again to last card and submit with jquery? 【发布时间】:2020-12-09 08:27:03 【问题描述】:

the results I expected

我想要的是能够制作出这样的东西......

但是为什么我执行的 jquery 中的 if else 不能像图片中那样工作?

这在我的 html 代码中

<div>
  <div class="card1 active">
    <p>CARD 1</p>
    <button class="btn-back">BACK</button>
    <button class="btn-next">NEXT</button>
  </div>
  <div class="card2">
    <p>CARD 2</p>
    <button class="btn-back">BACK</button>
    <button class="btn-next">NEXT</button>
  </div>
  <div class="card3">
    <p>CARD 3</p>
    <button class="btn-back">BACK</button>
    <button class="btn-next">NEXT</button>
  </div>
  <div class="card4">
    <p>CARD 4</p>
    <button class="btn-back">BACK</button>
    <button class="btn-next">NEXT</button>
  </div>
</div>

这是我的 css(less) 代码

div 
  padding: 10px;
  
  .card1,.card2,.card3,.card4 
    display: none;
    border-radius: 10px;
    margin-bottom: 10px;
    background: #777;
  
  
  .active 
    display: block;
  

jQuery

$(document).ready(() => 
  $(".btn-next").click(() => 
    if($(".card1 p").html() === "CARD 1") 
      $(".card2").addClass("active");
     else if($(".card2 p").html() === "CARD 2") 
      $(".card3").addClass("active");
     else if($(".card3 p").html() === "CARD 3") 
      $(".card4").addClass("active");
    
  ); 
);

https://codepen.io/kucingompong-cp/pen/abNmBzQ

【问题讨论】:

【参考方案1】:

主要问题是您的点击监听器 - 您正在使用 if-else 块,它只会运行 if 语句,因为 $(".card1 p").html() === "CARD 1" 始终是 true

您可以通过重新排列if-else 语句来修复它(将$(".card1 p").html() === "CARD 1" 放在else 块中;将$(".card2 p").html() === "CARD 2" 放在第二个else-if 块中,等等)。

您还可以通过使用active 类和jqueryhasClass 方法来简化检查。你可以用$(".card1").hasClass('active')代替$(".card1 p").html() === "CARD 1"

结束它,而不是使用 if-else 语句,我建议您使用另一种方法来处理按钮点击。以下是我自己的实现

$(document).ready(() => 
  $(".btn-next")
  .click(e => $(e.target).parent().next().addClass('active')); 
);
div 
  padding: 10px;
  


 .card1,.card2,.card3,.card4 
    display: none;
    border-radius: 10px;
    margin-bottom: 10px;
    background: #777;
 
  
  .active 
    display: block;
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <div class="card1 active">
    <p>CARD 1</p>
    <button class="btn-back">BACK</button>
    <button class="btn-next">NEXT</button>
  </div>
  <div class="card2">
    <p>CARD 2</p>
    <button class="btn-back">BACK</button>
    <button class="btn-next">NEXT</button>
  </div>
  <div class="card3">
    <p>CARD 3</p>
    <button class="btn-back">BACK</button>
    <button class="btn-next">NEXT</button>
  </div>
  <div class="card4">
    <p>CARD 4</p>
    <button class="btn-back">BACK</button>
    <button class="btn-next">NEXT</button>
  </div>
</div>

我使用了一些jquery遍历方法parent()next()

【讨论】:

我真的建议查一下jquery的遍历方法。它真的会对你有很大帮助。 @MuhammadManshur

以上是关于单击按钮后如何显示下一张卡片并再次单击并再次显示下一张卡片到最后一张卡片并使用jquery提交?的主要内容,如果未能解决你的问题,请参考以下文章

Java程序设计:界面有两个按钮(上一张和下一张),当单击上一张显示上一张图片,单击下一张显示下一张图片

单击下一步按钮如何更改图像

文本字段值已更新并保存,但当再次加载表单并单击按钮时,字段会重置为默认值

如何在 SwiftUI 中再次初始化 View?

单击表格视图时如何显示选定的行?

关闭并显示按钮上的视图单击从另一个视图