jQuery click()和append()在迭代的div上没有响应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery click()和append()在迭代的div上没有响应相关的知识,希望对你有一定的参考价值。

我正在迭代这个div和脚本,以便用户可以添加三个默认选项(question-editor-answer-container)的答案。但点击“添加答案”不起作用,我不明白为什么。

我有一个单独的工作,但麻烦开始时,我不得不调整在同一页面上有很多div。其他容器(popup.question-editor)有不同的id,如13,14,15等。这些是通过php放置的,这可能不相关。

var container = $(".popup.question-editor#12");
container.find(".add-answer").click(function() {
  var order = null;
  order = container.find('.question-editor-answers div:last-child .correct').attr('value');
  order = parseInt(order) + 1;
  container.find('.question-editor-answers').append($('<div class="question-editor-answer-container"><span class="question-answer"><input type=text name="answers[]" /></span><span class="question-correct"><input type="radio" class="correct" value="' + order + '"name="correct"  /></span></div>'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="popup question-editor" id="12">
  <span class="close" id="close">X</span>
  <form method="post" lpformnum="4">
    <p>
      <label>Question</label>
      <textarea name="question" class="question-input"></textarea>
    </p>
    <p>
      <label>Answers</label>
    </p>
    <div class="question-editor-answers">
      <div class="question-editor-answer-container">
        <span class="question-answer">
						<input type="text" name="answers[]">
					</span>
        <span class="question-correct">
						<input type="radio" class="correct" name="correct" value="0">
					</span>
      </div>
      <div class="question-editor-answer-container">
        <span class="question-answer">
						<input type="text" name="answers[]">
					</span>
        <span class="question-correct">
						<input type="radio" class="correct" name="correct" value="1">
					</span>
      </div>
      <div class="question-editor-answer-container" id="found">
        <span class="question-answer">
						<input type="text" name="answers[]">
					</span>
        <span class="question-correct">
						<input type="radio" class="correct" name="correct" value="2">
					</span>
      </div>
      <div>Something</div>
    </div>
    <div class="add-answer" id="add-answer"><span>add</span></div>
    <p></p>
    <p>
      <input type="checkbox" name="reuse" value="1">Allow reuse (what does this mean?)
    </p>
    <p>
      <input type="hidden" name="add_question" value="add">
      <input type="hidden" name="category" value="1">
      <input type="submit" value="Add">
    </p>
  </form>
</div>
答案

不要使用以数字字符开头的id:

在CSS中,标识符(包括选择器中的元素名称,类和ID)只能包含字符[a-zA-Z0-9]和ISO 10646字符U + 00A0及更高,加上连字符( - )和下划线( _);它们不能以数字,两个连字符或连字符后跟数字开头。标识符还可以包含转义字符和任何ISO 10646字符作为数字代码(请参阅下一项)。例如,标识符“B&W?”可以写成“B &W ?”或“B 26 W 3F”。

W3C Recommandation

以上是关于jQuery click()和append()在迭代的div上没有响应的主要内容,如果未能解决你的问题,请参考以下文章

JQuery获取append后的动态元素

jquery append脚本增加的html onclick时间无法生效的原因以及解决方案

JQuery获取append后的动态元素:live()和on()

jquery向元素添加点击事件

jQuery入门教程-文档操作方法

jquery 动态添加的元素 绑定事件click失效