Discuss / JavaScript / 修改一下

修改一下

Topic source

韩承欣

#1 Created at ... [Delete] [Delete and Lock User]
    // TODO:绑定事件 一个jqtest
    //全选与否A
    selectAll.change(function () {
      let flag = selectAll.is(":checked");
      //form.find(':checkbox').prop('checked', !flag)
      //console.log(flag)
      langs.prop("checked", flag);
      if (flag) {
        deselectAllLabel.show();
        selectAllLabel.hide();
      } else {
        deselectAllLabel.hide();
        selectAllLabel.show();
      }
    });
    //反选B
    invertSelect.click(function () {
      for (var i = 0; i < langs.length; i++) {
        //langs.eq(i).prop('checked',!langs.eq(i).is(':checked'))
        langs.eq(i).prop("checked", !langs.eq(i).prop("checked"));
      }
      handan();
      //评论区的做法
      //langs.get().forEach(el => $(el).prop('checked', !$(el).is(':checked')));
      //checkAllOrDeAll();
    });
    //判断后两个C
    //当用户手动 ==>langs.change尤为合理
    langs.change(function () {
      handan();
    });
    //判断 将这个逻辑拿出来供A与C使用,目的是为了更合理的实现反选也能选中第一个复选框.
    function handan() {
      var flag = true;
      var i = 0;
      for (i = 0; i < langs.length; i++) {
        if (!flag == langs.eq(i).prop("checked")) {
          flag = false;
        }
        //console.log(flag)
        //console.log("i:"+i)
      }
      console.log(`最终的flag值为${flag}`);
      console.log(`最终的i值为${i}`);
      if (i == langs.length && flag == true) {
        deselectAllLabel.show();
        selectAllLabel.hide();
        selectAll.prop("checked", true);
      } else {
        deselectAllLabel.hide();
        selectAllLabel.show();
        selectAll.prop("checked", false);
      }
    }


  • 1

Reply