JavaScript:如何删除';被按下';来自复选框的状态?

JavaScript:如何删除';被按下';来自复选框的状态?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我正在覆盖复选框上的mousedown事件,以启用通过拖动其他复选框进行选择。这涉及到必须执行event.preventDefault()以禁用默认文本选择行为 一切都正常工作,除了一个恼人的tic,即复选框一直处于“按下”状态,直到我放开鼠标(如果不清楚,请尝试按住复选框上的鼠标以了解我的意思) 如何将复选框的状态恢复为完全关闭或完全打开(不是“被按下”) 编辑:这是我的代码的一个示例。您可以通过 但是,这种方法只允许您为此状态定义自己的规则,而不会告诉浏览器在未触及状态下呈现默认系统复选框。

我正在覆盖复选框上的
mousedown
事件,以启用通过拖动其他复选框进行选择。这涉及到必须执行
event.preventDefault()
以禁用默认文本选择行为

一切都正常工作,除了一个恼人的tic,即复选框一直处于“按下”状态,直到我放开鼠标(如果不清楚,请尝试按住复选框上的鼠标以了解我的意思)

如何将复选框的状态恢复为完全关闭或完全打开(不是“被按下”)


编辑:这是我的代码的一个示例。

您可以通过

但是,这种方法只允许您为此状态定义自己的规则,而不会告诉浏览器在未触及状态下呈现默认系统复选框。这当然不是防弹的,但在你的情况下可能会令人满意


为了最大限度地控制外观,您需要实现一个自定义复选框组件,或者使用许多UI小部件库中的一个(如Dojo、ExtJS、UniformJS等)。这些自定义小部件基本上隐藏了真实的
元素,提供了一个“假”元素供您交互(但这模仿了本机UI控件功能,只是它完全可以设置主题)。

谢谢,我不确定如何最好地分段显示我的文本您的鼠标向下侦听器是否返回假消息?不,我只是执行
.preventDefault()
。但是我刚刚尝试过,让它返回false也不会改变任何事情。您可以尝试在
mousedown
覆盖中手动触发
mouseup
事件。我不确定您是否能够使用内置表单控件找到跨浏览器的问题解决方案。每个浏览器处理它们的方式略有不同。我可能会建议做一些自定义控件替换或一些类似的插件。啊,我想知道是否有一个与此相关的伪类。无法更改伪类是否应用于对象?或者通过javascript设置“伪类”状态?不幸的是,不,这就是我所说的。只能应用规则,不能删除以前的规则。但我希望有一个整洁的黑客为这个…嗯,和复选框的没有一个
背景色
,所以似乎没有什么我可以做的。。。谢谢你!
​input[type=checkbox]:active {
    outline: none;
    border: none;
    /* etc...*/
}​​​​​​