Javascript 使用preventDefault后,为什么可以';我不能用jquery勾选一个框吗?

Javascript 使用preventDefault后,为什么可以';我不能用jquery勾选一个框吗?,javascript,jquery,Javascript,Jquery,为什么下面的代码不起作用。我阻止对事件执行默认操作。那我还是要勾选这个框 html <input type="checkbox" class="checkbox" /> 您可能认为单击复选框仍会选中该复选框。。但事实并非如此。查一查小提琴,看看我的意思 我还尝试过在没有任何运气的情况下使用attr函数。您必须将设置“checked”属性的代码放在单独的事件循环中: setTimeout(function() { $('.checkbox').prop('checked', tru

为什么下面的代码不起作用。我阻止对事件执行默认操作。那我还是要勾选这个框

html

<input type="checkbox" class="checkbox" />
您可能认为单击复选框仍会选中该复选框。。但事实并非如此。查一查小提琴,看看我的意思


我还尝试过在没有任何运气的情况下使用
attr
函数。

您必须将设置“checked”属性的代码放在单独的事件循环中:

setTimeout(function() { $('.checkbox').prop('checked', true); }, 1);

浏览器或库必须在事件处理程序返回后取消设置复选框,因为它在调用处理程序之前响应单击而设置复选框。

我相信单击是浏览器作为onfocus的捕获器。如果你第二次点击它(当它被聚焦时),它可能会工作?你是否有某种服务器端代码,在asp.net中选中复选框时会运行?@Roeland是的,我同意;然而,想做这件事有点奇怪。如果您希望“单击”结束时保持复选框处于选中状态,为什么不跳过调用
.preventDefault()
?在我的代码中,有一些实例不应该通过单击来更新复选框。@Roeland啊,您也可以有条件地调用
.preventDefault()
;也就是说,仅当您希望单击使复选框保持未选中状态时才调用它。
$('.checkbox').click( function(e) {
    // do some logic that returns true or false
    if (!mylogic) {
        return false;
        // returning false will prevent the checkbox to be checked.
    }
});
$('.checkbox').click( function(e) {
    // do some logic that returns true or false
    if (!mylogic) {
        return false;
        // returning false will prevent the checkbox to be checked.
    }
});