0

在两种情况之一中,我在尝试获取 datatables.js 行上的复选框时遇到问题。

使用下面的代码 chkCtrl.name 在处理程序函数中未定义。

$("table#tblAssays tbody tr").each(function (index) {
        if ($.trim($(this).find('td:eq(9)').text()) == todayDOW) 
        {
            var chkCtrl = $(this).find("td input:checkbox");
            HandleCheckedChanged(chkCtrl);
        }

但是,如果我按以下方式处理单击事件,则 this.name 返回一个值

 $("#tblAssays").on("click", "tbody td input:checkbox", function () {
    HandleCheckedChanged(this);

有人可以指出我做错了什么吗?

谢谢。

4

2 回答 2

0

$(this).find("td input:checkbox")返回一个没有 name 属性的 jQuery 对象,而this在 click 处理函数中引用一个 DOM 对象,它有一个 name 属性。

试试HandleCheckedChanged(chkCtrl[0]);吧。

于 2012-11-20T21:51:21.980 回答
0

在您的第一个示例中,您将 jQuery 对象引用传递给该HandleCheckedChanged函数。在后者中,您实际上是在传递 DOM 元素。

您应该将第一个更改为:

var chkCtrl = $(this).find("td input:checkbox").get(0);
于 2012-11-20T21:53:02.377 回答