0

我在使用 jquery click 函数时遇到了一个奇怪的问题。假设发生的是用户单击链接“.selectlink”并在页面上打勾。这工作正常,再次单击它并取消选中该框.....也很好,再次单击链接,没有任何反应,再单击它,仍然没有任何反应,所以该功能似乎只有在两个之后才能工作clicks 然后停止工作,直到页面被刷新。

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

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

     countChecked();
});
4

3 回答 3

1

出现问题是因为 ':checked' 状态是基于 DOM 中的 'checked' 属性确定的,而不是 'checked' 属性的存在或值。有关属性与属性的更多信息,请参阅 jquery 文档:http: //api.jquery.com/prop/

为了使它工作(如您所见),您必须这样做:

var myId = $('#check_' + this.id);
if ($(myId).is(':checked')) {
    $(myId).prop('checked', false);
} else {
    $(myId).prop('checked', true);
}
于 2013-09-24T09:36:59.583 回答
0

尝试

$(document).off('click').on('click', '.selectlink', function () {

解绑和绑定。

于 2013-09-24T09:40:11.333 回答
0

多么奇怪,我发现如果我使用 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();
    });
});
于 2013-09-24T09:25:32.187 回答