使用javascript单击事件后不必要的1秒延迟

使用javascript单击事件后不必要的1秒延迟,javascript,checkbox,toggle,lag,Javascript,Checkbox,Toggle,Lag,我有一个javascript代码,当用户单击框上的任意位置时,它可以从单选按钮1切换到单选按钮2。它可以工作,但只有在大约1秒的延迟后才能工作。将会有上百个这样的盒子,所以这种延迟真的会扼杀用户体验。有没有线索表明这种滞后是从哪里来的 注意:如果我移除循环,并且我以具有唯一ID的元素为目标,而不是通过“具有类x的所有元素”进行循环,那么延迟就会消失。但是我需要循环,考虑到会有一百个这样的盒子 下面是javascript: $('.checkbox-oui-non').click(function

我有一个javascript代码,当用户单击框上的任意位置时,它可以从单选按钮1切换到单选按钮2。它可以工作,但只有在大约1秒的延迟后才能工作。将会有上百个这样的盒子,所以这种延迟真的会扼杀用户体验。有没有线索表明这种滞后是从哪里来的

注意:如果我移除循环,并且我以具有唯一ID的元素为目标,而不是通过“具有类x的所有元素”进行循环,那么延迟就会消失。但是我需要循环,考虑到会有一百个这样的盒子

下面是javascript:

$('.checkbox-oui-non').click(function(evt) {
    var a = document.querySelectorAll(".checkbox-oui-non");
    var b = document.querySelectorAll(".checkbox-oui-non .oui");
    var c = document.querySelectorAll(".checkbox-oui-non .non");
    
    for (i = 0; i < a.length; i++) {
        if (b[i].checked ||
        c[i].checked) {
            if (b[i].checked) {
                b[i].checked = false; 
                c[i].checked = true;
            }
            else if (c[i].checked){
                b[i].checked = true; 
                c[i].checked = false;
                }
        } else {    
            b[i].checked = true;
        }
    }
});
$('.复选框oui non')。单击(函数(evt){
var a=document.querySelectorAll(“.checkbox oui non”);
var b=document.querySelectorAll(“.checkbox-oui-non.oui”);
var c=document.querySelectorAll(“.checkbox oui non.non”);
对于(i=0;i
以及html:

<div class="checkbox-oui-non">
    <span>L'enfant est né d'une précédente union</span>
    <div class="oui-non-toggle-wrapper">
        <div class="checkbox">
            <input type="radio" id="moi_oui" name="moi" class="oui">
            <label for="moi_oui">oui</label>
        </div>
        <div class="checkbox">
            <input type="radio" name="moi" id="moi_non" class="non">
            <label for="moi_non">non</label>
        </div>
        <div class="oui-non-toggle"></div>
    </div><!-- end of oui-non-wrapper -->
</div><!-- end of checkbox-oui-non -->

儿童与儿童联合会
是的
不

非常感谢你的帮助

仅切换已单击的一个。现在,每次你点击其中任何一个,它都会切换它们。您已经将
evt
传递给函数,请使用它。实际上,您完全可以在不使用循环的情况下执行此操作。您可以在问题上设置ID,然后通过类在每个复选框上设置单击事件侦听器。单击复选框后,您可以使用jQuery获取所单击对象的.parent ID。您可以使用该ID和单击的问题创建一个带有键、值对的JavaScript对象。您甚至可以使用它来创建JSON对象。感谢您的回复!我试图应用雅科夫的想法,并通过删除“elseif”部分以及所有“checked=false”来简化代码。现在,当我从“非”变为“oui”时,延迟消失了,太棒了。但是,当我走另一条路时,这种滞后仍然存在。问题解决了一半。我不知道怎么用你说的“evt”。同时,我也在为如何实现Tony的解决方案而苦苦挣扎。我对javascript有点在行。