0
$("#ckbCheckAll").click(function () {   

  $('div .bulkop .ez-checkbox').toggleClass("ez-checked", this.checked);

    var id_checkboxes = $('div .bulkop .ez-checkbox input').map(function() {
      return this.id;
    }).get();
   for (var i = 0; i < id_checkboxes.length; i++) {
   if (('#'+id_checkboxes[i]).is(':checked')) { 
        ('#'+id_checkboxes[i]).removeAttr('checked');
      }
      else{ //alert("In Else");
        ('#'+id_checkboxes[i]).attr('checked');
      }
 }
 });

我在控制台中收到以下错误:

TypeError: id_checkboxes[i].val is not a function
[Break On This Error]   

if (("#"+id_checkboxes[i].val()).is(':checked')) {
4

3 回答 3

3

为什么不只使用$.eachand .prop()

$("#ckbCheckAll").click(function () {
    $('div .bulkop .ez-checkbox').toggleClass("ez-checked", this.checked);

    $('div .bulkop .ez-checkbox input').each(function() {
        $(this).prop('checked', !$(this).is(':checked')); //Toggle "checked"
    });
});
于 2013-10-17T15:41:00.443 回答
2

这里的问题是该方法get()返回本地 DOM 元素集合,而不是 jQuery 对象。

因此,由于它不是 jQuery 对象,因此它没有该val()方法。

因此,线

("#"+id_checkboxes[i].val()).is(':checked')

实际上应该是

$("#"+$(id_checkboxes[i]).val()).is(':checked') // added "$" in front

但我会将整个处理程序替换为

$("#ckbCheckAll").click(function () {
    $('div .bulkop .ez-checkbox')
        .toggleClass("ez-checked", this.checked)
        .find('input')
        .prop('checked', this.checked); //Toggle "checked" to the same state of #ckbCheckAll
});

JSFiddle:http: //jsfiddle.net/Krh9S/2/

于 2013-10-17T15:39:09.710 回答
0

$(string selector)用 jQuery($)包装

改变

  ("#"+id_checkboxes[i].val())

 $("#"+id_checkboxes[i]).val() 

然后

('#'+id_checkboxes[i]).is(':checked') 

$('#'+id_checkboxes[i]).is(':checked')

笔记:

你不能打电话val()like "#"+id_checkboxes[i].val(),因为id_checkboxes[i] is string

你也做不到$("#"+id_checkboxes[i].val()).is(':checked')

于 2013-10-17T15:40:09.570 回答