繁体   English   中英

使用 preventDefault 后,为什么我不能用 jquery 选中一个框?

[英]after using preventDefault, why can't i check a box with jquery?

为什么下面的代码不起作用。 我阻止了对事件的默认操作。 然后我无论如何都想选中这个框。

html

<input type="checkbox" class="checkbox" />

文字脚本

$('.checkbox').click( function(e) {
    e.preventDefault();
    // some logic happens... now i may decide to check the box (in this case we want to check it for testing)
    $('.checkbox').prop('checked',true);
});

您会认为单击复选框仍会选中该框.. 但事实并非如此。 检查小提琴,看看我的意思。

http://jsfiddle.net/5KDH8/

我也尝试过使用attr函数,但没有任何运气。

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

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

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

$('.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.
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM