Discuss / JavaScript / 所有功能都可以正常运行

所有功能都可以正常运行

Topic source

猎杀属性

#1 Created at ... [Delete] [Delete and Lock User]

重构后

//检查是否全选函数
function isSelectAll() {
  if (
    langs.filter(function() {
      return $(this).is(":checked");
    }).length === langs.length
  )
    return true;
  else return false;
}
//勾选事件
langs.change(function() {
  if (isSelectAll()) {
    selectAllLabel.hide();
    deselectAllLabel.show();
    selectAll.prop("checked", true);
  } else {
    selectAllLabel.show();
    deselectAllLabel.hide();
    selectAll.prop("checked", false);
  }
});
//全选事件
selectAll.click(function() {
  if (isSelectAll()) {
    langs.prop("checked", false);
    langs.change();
  } else {
    langs.prop("checked", true);
    langs.change();
  }
});
//反选事件
invertSelect.click(function() {
  langs.map(function() {
    var jo = $(this);
    if (jo.is(":checked")) jo.prop("checked", false);
    else jo.prop("checked", true);
  });
  langs.change();
});

重构前

var is_selectedAll = false;
selectAll.click(function() {
  selectAll.prop("checked", false);
  if (is_selectedAll) {
    selectAllLabel.show();
    deselectAllLabel.hide();
    langs.map(function() {
      $(this).prop("checked", false);
    });
    is_selectedAll = false;
  } else {
    selectAllLabel.hide();
    deselectAllLabel.show();
    langs.map(function() {
      $(this).prop("checked", true);
    });
    is_selectedAll = true;
  }
});
invertSelect.click(function() {
  selectAll.prop("checked", false);
  langs.map(function() {
    let jo = $(this);
    if (jo.is(":checked")) {
      jo.prop("checked", false);
    } else {
      jo.prop("checked", true);
    }
  });
});
langs.change(function() {
  let checked = langs.filter(function() {
    let jo = $(this);
    return !jo.is(":checked");
  });
  if (checked.length === 0) {
    is_selectedAll = true;
    selectAllLabel.hide();
    deselectAllLabel.show();
    selectAll.prop("checked", true);
  } else if (checked.length < langs.length) {
    selectAllLabel.show();
    deselectAllLabel.hide();
    selectAll.prop("checked", false);
  }
});

  • 1

Reply