Javascript jqueryclick函数只工作两次

Javascript jqueryclick函数只工作两次,javascript,jquery,html,function,onclick,Javascript,Jquery,Html,Function,Onclick,我对jquery的点击功能有一个奇怪的问题。假设用户单击一个链接。选择“链接”并在页面上勾选一个框。这工作得很好,再次单击它,它会解锁框……同样很好,再次单击链接,什么都没有发生,再单击一次,仍然什么都没有发生,因此该功能似乎只在两次单击后工作,然后停止工作,直到页面刷新 $(document).on('click', '.selectlink', function () { var myId = $('#check_' + this.id); if ($(myId).is

我对jquery的点击功能有一个奇怪的问题。假设用户单击一个链接。选择“链接”并在页面上勾选一个框。这工作得很好,再次单击它,它会解锁框……同样很好,再次单击链接,什么都没有发生,再单击一次,仍然什么都没有发生,因此该功能似乎只在两次单击后工作,然后停止工作,直到页面刷新

$(document).on('click', '.selectlink', function () {
     var myId = $('#check_' + this.id);

     if ($(myId).is(':checked')) {
          $(myId).attr('checked', false);
     } else {
          $(myId).attr('checked', true);
     }

     countChecked();
});

奇怪的是,我发现如果我用prop而不是attrib,它现在可以工作两次以上,不知道为什么

$(document).on('click', '.selectlink', function () {
     var myId = $('#check_' + this.id);
     if ($(myId).is(':checked')) {
         $(myId).prop('checked', false);
     }
     else {
        $(myId).prop('checked', true);
     }
     countChecked();
    });
});

出现此问题是因为“:checked”状态是根据DOM中的“checked”属性确定的,而不是“checked”属性的存在或值。有关属性与属性的更多信息,请参阅jquery文档:

为了让它工作(如您所发现的),您必须执行以下操作:

var myId = $('#check_' + this.id);
if ($(myId).is(':checked')) {
    $(myId).prop('checked', false);
} else {
    $(myId).prop('checked', true);
}
试一试

$(文档).off('click')。on('click',')。selectlink',函数(){


取消绑定和绑定。

如果是复选框,你真的应该使用
prop
而不是
attr
。它工作正常……countChecked()做什么?countChecked查看页面上有多少框被勾选,并将其显示为页面顶部的数字。我们今天问了多少次这个问题?attr()可能不接受布尔第二个参数。是否改为尝试0/1?