【问题标题】:Separating list into divs to show only one at a time将列表分成 div 以一次只显示一个
【发布时间】:2015-10-01 10:04:31
【问题描述】:

我的问题是将问题列表分成单独的 div(使用 javascript/html/c#)。该程序目前的工作方式是有一个用于测验的主视图,它显示内容部分,一旦完成,就会隐藏该部分并显示测验部分视图。

目前这会按如下格式显示所有问题 (想象一个只有 2 个问题的测验)

Q#1

-(多选)

-

Previousbtn NextBtn

Q#2

-(多选)

-

Previousbtn 完成

我想要做的是一次只显示一个问题,方法是(大概)将每个问题分成自己的 div 并根据需要显示/隐藏它们(在 btn 点击下一个或上一个时)。

我昨天下午和今天都碰壁了,所以任何一般性的指导都将不胜感激。

谢谢

【问题讨论】:

  • 你能展示一些代码吗,比如你是如何做到这一点的?您可以使用 javascript 或仅使用纯 CSS 和 HTML 来执行此操作,但在明确要求之前我不会提出任何建议。
  • 嗨,很抱歉含糊其辞,但它的公司源代码让我犹豫要不要发布太多。测验部分视图中的自动取款机有类似这样的东西-foreach(model.quiz中的var问题){应该显示的逻辑}但我认为我需要以某种方式在这个foreach中为测验中的每个问题创建一个div并为其分配一个唯一的 ID?

标签: javascript c# jquery html css


【解决方案1】:

对于上一个下一个功能,您可以使用与 Aren 相同的功能,但要回答发布的问题,关于分离列表,请使用以下功能

您将拥有与上述相同的脚本

    var index = 0;
    var n = $("div.quiz-container").length;
    var a = n - 1

     $(".quiz-container:first").addClass("active").show();
    if (index == 0) {
      $("#prev").prop("disabled", true);
    }
    $("#next").on("click", function() {
      index++;
      $(".quiz-container.active").removeClass('active').hide();
      $(".quiz-container").eq(index).addClass('active').show();
      if (index == 0) {
        $("#prev").prop("disabled", true);
      } else if (index != 0) {
        $("#prev").prop("disabled", false);
      }
      if (index != a) {
        $("#next").prop("disabled", false);
      } else if (index == a) {
        $("#next").prop("disabled", true);
      }
    });
    $("#prev").on("click", function() {
      index--;
      $(".quiz-container.active").removeClass('active').hide();
      $(".quiz-container").eq(index).addClass('active').show();
      if (index == 0) {
        $("#prev").prop("disabled", true);
      } else if (index != 0) {
        $("#prev").prop("disabled", false);
      }
      if (index != a) {
        $("#next").prop("disabled", false);
      }
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="quiz-container active">
  <p>Q: Question 1?</p>
  <ul>
    <li>choice1</li>
    <li>choice2</li>
    <li>choice3</li>
    <li>choice4</li>
  </ul>
</div>

<div class="quiz-container" style="display:none">
  <p>Q: Question 2?</p>
  <ul>
    <li>choice1</li>
    <li>choice2</li>
    <li>choice3</li>
    <li>choice4</li>
  </ul>
</div>

<div class="quiz-container" style="display:none">
  <p>Q: Question 3?</p>
  <ul>
    <li>choice1</li>
    <li>choice2</li>
    <li>choice3</li>
    <li>choice4</li>
  </ul>
</div>

<button id="prev">Previous</button>
<button id="next">Next</button>

但在您视图的 foreach 循环中,您将拥有:

foreach (var question in model.quiz) { 
 <div class="quiz-container">
      <h1>@question.QuestionTitle</h1>
      <ul>
           foreach (var answer in question.Answers) {
           <li>@answer</li>
           }
      </ul>
 </div>
 }

<button id="next">Next</button>
<button id="prev">Previous</button>

因此,您可以有不同数量的答案和不同数量的问题。希望这会有所帮助。

P.S 你需要根据你的模型编辑代码

【讨论】:

  • 感谢您的建议,这将很有帮助。有没有办法将你的函数与 .hide() 和 .show() 一起使用而不是 css?这似乎是我们项目经理想要的方式
  • @bjjrolls 还看到 JSFiddle 显示了 JQuery 的工作版本,显然它需要放入规则等
  • @bjjrolls JSFiddle 现在具有确保按钮在适当时启用/禁用的代码
【解决方案2】:

这只是一个示例代码,您可以获取一些知识并添加您的额外逻辑来实现

$(function(){
	var index = 0;
	$(".quiz-container").addClass("inactive");
	$(".quiz-container:first").addClass("active");
	$("#next").on("click", function(){
		index++;
		$(".quiz-container.active").removeClass("active").addClass("inactive");
		$(".quiz-container").eq(index).removeClass("inactive").addClass(active);
	})
	$("#prev").on("click", function(){
		index--;
		$(".quiz-container.active").removeClass("active").addClass("inactive");
		$(".quiz-container").eq(index).removeClass("inactive").addClass(active);
	})
});
.active {
	display: block;
}
.inactive {
	display: none;
}
<div class="quiz-container">
<p>Q: Question?</p>
<ul>
<li>choice1</li>
<li>choice2</li>
<li>choice3</li>
<li>choice4</li>
</ul>
</div>

<div class="quiz-container">
<p>Q: Question?</p>
<ul>
<li>choice1</li>
<li>choice2</li>
<li>choice3</li>
<li>choice4</li>
</ul>
</div>

<div class="quiz-container">
<p>Q: Question?</p>
<ul>
<li>choice1</li>
<li>choice2</li>
<li>choice3</li>
<li>choice4</li>
</ul>
</div>

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    相关资源
    最近更新 更多