【问题标题】:select all checkbox in header , to select all checkboxes in that column选中标题中的所有复选框,以选中该列中的所有复选框
【发布时间】:2017-09-12 07:44:43
【问题描述】:

我已经使用了代码:

<script type="text/javascript">
  $(window).load(function () {
    $(document).delegate(".checkall", "click", function(event) {
      $(this).closest("table").find(':checkbox').attr('checked', this.checked);
    });
  });
</script>

当我第一次选择/取消选择标题中的复选框时,此代码工作正常。但是当我再次选中该复选框时,此代码不起作用。复选框未选中。

【问题讨论】:

  • 检查这个答案,它将拥有您需要的一切:stackoverflow.com/questions/426258/… 您还需要将其包装在 if 语句中: if($(this).closest("table").find(': checkbox').attr('checked')){ /*校验码*/ }else {/*取消校验码*/}并且使用.prop更好

标签: javascript jquery jsf-2.2


【解决方案1】:

您应该使用.prop() 而不是.attr()。你必须检查一个元素是否已经被检查过。

...
  var $checkbox = $(this).closest("table").find(':checkbox');
  if ($checkbox.is(':checked')) $checkbox.prop('checked', false);
  else                          $checkbox.prop('checked', true);
...

【讨论】:

  • 我刚刚在上面提到的代码中将 .attr 替换为 .prop 。它工作正常。但是,当我取消选择下面列中的一个复选框时,标题复选框也应该自动取消选择。但它没有发生。
  • 在看到您的html 之前,我恐怕无法帮助您解决这个问题。创建一个 jsfiddle,我可以看看。
  • 我无法创建 jsfiddle 。请建议
  • 我需要看到你的html 来提出任何建议。目前,我无法提出任何建议,也看不到任何理由让您的脚本具有所需的行为。显示更多代码。
猜你喜欢
  • 2013-04-26
  • 2014-06-20
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
相关资源
最近更新 更多