Javascript 测验和jQuery的问题

Javascript 测验和jQuery的问题,javascript,jquery,Javascript,Jquery,我写了两张卡片的简单测验。用户单击卡片后,属性单击更改状态并检查答案 clicked = false; $(document).on("click", "#card1", function() { clicked = true; check answer........ }); 我得到了一个关于点击的事件,当用户点击body元素时,它应该加载下一个问题。 仅当卡被单击且单击状态为true时,此事件才有效 $(document).on("click", "body", function()

我写了两张卡片的简单测验。用户单击卡片后,属性单击更改状态并检查答案

clicked = false;
$(document).on("click", "#card1", function() {
 clicked = true;
 check answer........
});
我得到了一个关于点击的事件,当用户点击body元素时,它应该加载下一个问题。 仅当卡被单击且单击状态为true时,此事件才有效

$(document).on("click", "body", function() {
            if (clicked == true) {
                quiz.nextQuestion();
                clicked = false; 
            }
        });
但这两个onclick事件同时启动和执行

我怎样才能防止这种情况发生?

简单

clicked = false;
$(document).on("click", "#card1", function() {
    clicked = true;
    //check answer........
    $(this).on("click", "body", function() {
        if (clicked == true) {
            quiz.nextQuestion();
            clicked = false; 
        }
    });
});
希望这有帮助….

stopPropagation()可用于此操作。否则,单击内部元素也将触发主体单击功能

还有一件事是,我们必须单击
,而不是

说明:防止事件在DOM树中冒泡,防止任何父处理程序收到事件通知

clicked=false;
$(文档)。在(“单击”上,“卡片1”,功能(e){
e、 停止传播();
单击=真;
console.log(“点击卡片”);
});
$(文档)。在(“单击”,“html”,函数(e){
如果(单击==true){
log('click body');
单击=假;
}
});

卡片1

您可以在检查答案后,将clicked的状态更改为true

   $(document).on("click", "#card1", function() {
       check answer........
       clicked = true;
   });
这将确保在触发click事件时clicked不会变为true,从而使代码第二部分中的if语句变为false

你甚至可以通过

clicked = 0;
$(document).on("click", "#card1", function() {
    clicked = 1;
    check answer........
});

$(document).on("click", "body", function() {
        if (clicked == 2) {
            quiz.nextQuestion();
            clicked = 0; 
        }else
        {
            clicked +=1;
        }

    });
因为
#card1
中。在单击“卡体”的同时,单击“也工作”可以提供一个(缩小到基本内容)工作范围片段吗
clicked = 0;
$(document).on("click", "#card1", function() {
    clicked = 1;
    check answer........
});

$(document).on("click", "body", function() {
        if (clicked == 2) {
            quiz.nextQuestion();
            clicked = 0; 
        }else
        {
            clicked +=1;
        }

    });