0

下面是我的代码,它只工作一个全选和全选循环。如果我将语法更改为.change而不是.on('change'). 甚至.change可以使用 1.8.3 版本的 jquery,但之后就不行了。

<div id="mainframe" align="center">
  <div align="left"><strong>Select All CheckBox Demo.</strong></div>
  <table border="0" cellpadding="5" cellspacing="1" class="table">
    <th><input type="checkbox" id="selectall"/></th>
    <th>Programming Language</th>
    <th>Rating</th>
    <tr>
      <td align="center"><input type="checkbox" class="case" name="case" value="1"/></td>
      <td>PHP</td>
      <td>5</td>
    </tr>
    <tr>
      <td align="center"><input type="checkbox" class="case" name="case" value="2"/></td>
      <td>JSP</td>
      <td>4</td>
    </tr>
    <tr>
      <td align="center"><input type="checkbox" class="case" name="case" value="3"/></td>
      <td>ASP</td>
      <td>3</td>
    </tr>
  </table>
</div>
$("#selectall").on('change',function () {
  if($(this).is(":checked")){
    $('.case').attr('checked',true);
  }else{
    $('.case').attr('checked',false);
  }
});

4

2 回答 2

8

问题在于使用的方式attr。改为使用简化它prop

$(function(){
    $("#selectall").on('change',function () {
        $('.case').prop('checked', this.checked);
    });
});

小提琴

根据您在评论中的问题进行更新

jquery 1.3.2 版不on支持prop. 这是一个非常旧的版本,attr它本身可能处理特定的属性值(对于 element attribute)或布尔值(对于 element property)以添加/删除属性值(在这种属性的情况下(checkedselected...))或设置或取消设置元素属性基于指定的值类型。更高版本的 jquery 引入了prop用于设置元素属性和attr设置元素属性。大概这就是原因。另请注意,on1.3.2 版本的 jquery 不支持。

于 2013-08-07T21:17:16.643 回答
6

你需要使用

$('.case').attr('checked', 'checked');

或者

$('.case').prop('checked', true);

此外,您可以在一行代码中执行此操作:

$(function(){
    $("#selectall").on('change',function () {
        $('.case').prop('checked', $(this).is(":checked"));
    });
});

这是一个 jsFiddle:http: //jsfiddle.net/BWWph/

于 2013-08-07T21:20:25.807 回答