2015-02-23 60 views
0

我想在所有页面的DataTables列表的所有行中选中一个复选框。这是我的代码:jQuery在每个元素中查找输入复选框

$('#selectAll').click(function (e) { 
     var p = oTableAPI.rows('tr', { page: 'all', "filter": "applied" }).nodes(); 
     $.each(p, function (i, e) { 
      e.find('input[type = checkbox]').prop('checked', this.checked); 
     }); 
    }); 

在这行我得到Uncaught TypeError: undefined is not a function

e.find('input[type = checkbox]').prop('checked', this.checked); 

我到底做错了什么?

回答

2

e是对DOM元素的引用,而不是一个jQuery元件,因此不具有$ .find方法

$(e)使用或$(this)

$(e).find('input[type = checkbox]').prop('checked', this.checked); 

EDIT this.checked指向每个循环中的当前元素。也许节省检查变量,或使用var self = this;

$('#selectAll').click(function (e) { 
    var checked = this.checked; 
    var p = oTableAPI.rows('tr', { page: 'all', "filter": "applied" }).nodes(); 
    $.each(p, function() { 
     $(this).find('input[type = checkbox]').prop('checked', checked); 
    }); 
}); 
+0

当我CONSOLE.LOG($(E))我得到“[tr.odd,语境:tr.odd,jQuery的: “2.1.1”,构造函数:函数,选择器:“”,toArray:function ...]“,这是正确的吗?该复选框没有得到检查,但是... – 2015-02-23 17:04:52

+0

现在运作良好!谢谢! – 2015-02-23 17:08:53