Jquery点击功能只工作两次

Jquery Click Function Only Working Twice

本文关键字:两次 工作 功能 Jquery      更新时间:2023-09-26

im 在 jquery 单击函数方面遇到了一个奇怪的问题。假设发生的事情是用户单击链接".selectlink",并在页面上勾选一个框。这工作得很好,再次单击它,它会取消勾选该框.....也很好,再次单击链接,什么都没有发生,再单击它一些,仍然没有任何反应,因此该功能似乎仅在单击两次后才能工作,然后停止工作,直到页面刷新。

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

出现此问题是因为 ':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);
}

多么奇怪,我发现如果我使用 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();
    });
});

试试

$(document).off('click'

).on('click', '.selectlink', function () {

解绑和绑定。