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