Javascript 鼠标按下时复选框,鼠标按下时取消复选框

Javascript 鼠标按下时复选框,鼠标按下时取消复选框,javascript,jquery,checkbox,preventdefault,jquery-events,Javascript,Jquery,Checkbox,Preventdefault,Jquery Events,我正在制作jQuery应用程序,其中有一个复选框,只有在按下鼠标/按键/触摸时才会选中。选中鼠标向下,取消选中鼠标向上 即使我使用event.preventDefault(),如果鼠标按钮未按下,复选框仍保持选中状态,但空格键工作正常 $(函数(){ var cb=$(“输入”); cb .on(“鼠标向下键控”),函数(事件){ event.preventDefault(); cb.道具(“已检查”,真实); }) .on(“鼠标按键”,功能(事件){ event.preventDefaul

我正在制作jQuery应用程序,其中有一个复选框,只有在按下鼠标/按键/触摸时才会选中。选中鼠标向下,取消选中鼠标向上

即使我使用
event.preventDefault()
,如果鼠标按钮未按下,复选框仍保持选中状态,但空格键工作正常

$(函数(){
var cb=$(“输入”);
cb
.on(“鼠标向下键控”),函数(事件){
event.preventDefault();
cb.道具(“已检查”,真实);
})
.on(“鼠标按键”,功能(事件){
event.preventDefault();
cb.道具(“已检查”,错误);
});
})

问题是因为在复选框上释放
mouseup
时触发
click
事件,这将强制
checked
属性为
true
。要修复此挂钩,请将事件处理程序添加到
中,单击
,然后简单地对其调用
preventDefault()

还请注意,您可以向
on()
提供一个对象,该对象由要挂接的事件名称设置关键字,而不是多次调用
on()

$(函数(){
var$cb=$(“输入”);
$cb.on({
“鼠标向下键控”:功能(e){
e、 预防默认值();
$cb.prop(“选中”,正确);
},
“鼠标键控”:功能(e){
e、 预防默认值();
$cb.prop(“已检查”,错误);
},
“单击”:函数(e){
e、 预防默认值();
}
});
});


Funcy的可能副本,另一个选项是剪切鼠标的部分,让click完成它的工作,同样有效。@enapupe这是一个非常好的观点,谢谢。我在答案上加了一条关于它的注释。