2

为什么下面的代码不起作用。我阻止对事件的默认操作。然后我还是想选中该框。

html

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

javsacript

$('.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功能,但没有任何运气。

4

2 回答 2

3

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

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

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

于 2013-03-21T20:10:51.850 回答
0
$('.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.
    }
});
于 2013-03-21T20:43:09.520 回答