【问题标题】:Changing data in bootstrap modal在引导模式中更改数据
【发布时间】:2017-12-23 02:44:20
【问题描述】:

我正在开发危险游戏,根据单击的按钮将问题传递到引导模式。该按钮有一个属性 data-num,(问题数组中的索引),用于更改模式中的标题。它还将这个索引作为属性 data-num 传递给显示答案按钮,单击该按钮时,会将模式标题更改为答案。

这适用于第一个问题,但是当我单击第二个问题时,会加载正确的问题,但是当我单击 getanswer 按钮时会加载第一个问题的答案,即使正确的索引显示在下方的检查元素中按钮数据编号。 我究竟做错了什么?

var questions = [{
    prompt: "What generic data type should we use when we want to use varying data types for a variable?",
    correctAnswer: "Object",
  },
  {
    prompt: "Rewrite the following Javascript statment in C#: var flag = true ",
    correctAnswer: "bool flag = true"
  },
  {
    prompt: "double num1 = 9.34534910;\n int num2= (int)num1;\nSystem.Console.WriteLine(num2);",
    correctAnswer: "9"
  }
];

function showQuestion(event, $modal) {
  var button = $(event.relatedTarget);
  var num = parseInt(button.data('num'));
  var question = questions[num];
  $modal.find('.modal-title').text(question.prompt);
  $modal.find('.modal-body button').attr('data-num', num)
}

$("#myModal").on('show.bs.modal', function(event) {
    showQuestion(event, $(this));
  }
);

$("#myModal").on('hidden.bs.modal', function() {
    $('#myModal').removeData('bs.modal');
  }
);

$("#getanswer").click(function() {
    var num = ($(this).data('num'));
    console.log(num)
  }
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="bs-example">
  <!-- Modal HTML -->
  <div id="myModal" class="modal fade">
    <div class="modal-dialog modal-lg">
      <div class="modal-content">
        <div class="modal-body">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
          <p class="modal-title" data-answer="">Modal Window</p>
          <button id="getanswer" type="button" data-num="" class="btn btn-primary clickable">Reveal answer</button>
        </div>
      </div>
    </div>
  </div>
  <div class="question">
    <button type="button" class="btn btn-info gridbtn ten" data-toggle="modal" data-target="#myModal" data-num="0">$10</button>
  </div>
  <div class="question">
    <button type="button" class="btn btn-info gridbtn fifty" data-toggle="modal" data-target="#myModal" data-num="1">$50</button>
  </div>
</div>

【问题讨论】:

  • 启动模式的 HTML 在哪里?
  • HTML 底部的两个按钮,在“问题”div 中。然后模态框内的#getanswer 按钮检索答案。

标签: javascript jquery twitter-bootstrap twitter-bootstrap-3 bootstrap-modal


【解决方案1】:

使用这个(在#getAnswer 点击事件上):

var num = ($(this).attr('data-num'));

而不是

var num = ($(this).data('num'));

也许由于您使用 attr 设置了值,因此它也可以以这种方式检索它。

看起来你的方法应该可行,但这是我通过尝试发现的。

【讨论】:

  • 如果您喜欢,请接受我的回答。 :) (如果你有理由不想这样做,当然不必这样做)
  • 对不起!刚刚发布问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
相关资源
最近更新 更多