【发布时间】:2021-10-27 02:32:47
【问题描述】:
我有一段简单的代码可以在选中复选框时显示信息 div,如果未选中则隐藏该 div。在构建时,我遇到了一个我找不到任何信息可以解决的问题。为了简化问题,我有一个 if 语句,如果输入被检查,它将记录“检查”。如果未选中,则会记录“未选中”。
$("#my-id") 是一个 div,其中包含一个带有复选框输入的标签
<div id='my-id'>
<span>
<label>
<input type="checkbox">
test
</label>
</span>
</div>
所以点击它会选择和取消选择复选框输入。
$("#my-id").unbind('click').click(function(){
if($(this).find('input').is(':checked')){
console.log('checked');
}
else {
console.log('not checked');
}
});
我一键在日志中看到的是:
not checked
checked
然后当我再次点击同一个时,会显示
checked
not checked
这弄乱了 slideUp() 和 slideDown() 函数,因为它们最终被调用了两次,并且我的页面的某些部分上下滑动。任何见解将不胜感激。我确定 JQuery 有一些东西,或者是我还不了解的功能。
【问题讨论】:
-
那你为什么不绑定到复选框更改事件?
-
不清楚该代码将如何触发 console.log 2 次。我认为我们需要对此进行演示以充分帮助您。
-
您的代码有效,我什至使用纯 JS 对其进行了测试,因此您的代码中肯定发生了其他事情 - 可能会在某处触发“点击”:jsfiddle.net/359jcnrx。
-
Ryan,感谢您在 jsfiddle 中进行设置。当我单击它并查看日志时,“未检查”和“已检查”都出现了,这就是我的困惑所在。为什么执行 If 语句的两个结果。