Javascript 使用replaceWith时丢失类信息

Javascript 使用replaceWith时丢失类信息,javascript,jquery,html,Javascript,Jquery,Html,我正在用javascript创建一个测验,并使用jQuery.replaceWith()函数将一个div替换为另一个div。文本显示在替换之后,但单击事件不起作用。似乎新元素没有被识别为指定类的成员 以下是我所拥有的(仅包括相关部分): HTML: 测试问题1 测试答案1 测试答案2 测试答案3 测试答案4 测试默认响应 quick.js var q1Answers= '<div class = "answer_box grid_12"> <p class="

我正在用javascript创建一个测验,并使用jQuery.replaceWith()函数将一个div替换为另一个div。文本显示在替换之后,但单击事件不起作用。似乎新元素没有被识别为指定类的成员

以下是我所拥有的(仅包括相关部分):

HTML:


测试问题1

测试答案1

测试答案2

测试答案3

测试答案4

测试默认响应

quick.js

var q1Answers=
   '<div class = "answer_box grid_12">
    <p class="correct">Test Answer 5</p>
    <p class="incorrect">Test Answer 6</p>
    <p class="incorrect">Test Answer 7</p>
    <p class="incorrect">Test Answer 8</p>
    </div>';
var current_question = 0;
var questions = [q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12];
$(document).ready(function(){
alert("Ready");

$("#next_button").click(function(){
    if(current_question < questions.length){
    $(".question").replaceWith($(questions[current_question]));
    $(".answer_box").replaceWith($(q1Answers));
    current_question +=1;
    }
});

$('.correct').click(function(e){
    alert("correct");
});

$(".incorrect").click(function(){
    alert("incorrect");
});
});
var=
'

测试答案5

测试答案6

测试答案7

测试答案8

'; var当前问题=0; 风险值问题=[q1、q2、q3、q4、q5、q6、q7、q8、q9、q10、q11、q12]; $(文档).ready(函数(){ 警惕(“准备就绪”); $(“#下一步按钮”)。单击(函数(){ if(当前问题<问题长度){ $(“.question”)。替换为($(问题[当前问题]); $(“.answer_box”)。替换为($(q1Answers)); 当前问题+=1; } }); $('.correct')。单击(函数(e){ 警惕(“正确”); }); $(“.error”)。单击(函数(){ 警告(“不正确”); }); });

因此,第一个问题(测试问题1-4)被写入html,并在单击时调用正确/不正确的警报。单击“下一步”按钮时,将出现替换问题(5-8),但其正确/不正确的单击事件不再起作用。有什么想法吗

替换元素时,删除当前所在的元素,然后插入新的元素

事件处理程序的工作方式是将它们绑定到某些元素,而不是选择器本身,选择器本身只是一个字符串,因此当元素被删除时,绑定的事件处理程序也是如此,即使在其位置插入了具有相同类的新元素,它也不是相同的元素,并且没有相同的事件处理程序

实际上,没有办法将事件处理程序绑定到DOM中不存在的元素,但要解决此问题,可以将事件处理程序委托给未删除的元素

$('#quiz').on('click', '.correct', function(e){
    alert("correct");
});

$('#quiz').on('click', '.incorrect', function(){
    alert("incorrect");
});

你复制粘贴了这个吗?中缺少结束报价

var q1Answers='<div class = "answer_box grid_12>

var q1Answers='Aameer-感谢您的回复。$(“.correct”).click函数不会连接到标记中包含class=“correct”的任何内容吗?karan-我复制并粘贴了块,因此缺少的引号只是复制/粘贴错误。谢谢。是的,但是只有当时在de DOM中存在的元素。更好地使用.on(),它能够绑定与选择器匹配的当前和未来元素。更多信息请参见:Adeneo-谢谢,这正好解释了我的问题所在。沃尔特-我会调查.on函数。谢谢大家的快速回复!美丽的!问题解决了。
var q1Answers='<div class = "answer_box grid_12>