Javascript 找不到name属性
在以下两种情况中的一种情况下,我在尝试获取datatables.js行上的复选框时遇到问题 对于下面的代码,处理程序函数中未定义chkCtrl.nameJavascript 找不到name属性,javascript,jquery,datatables,Javascript,Jquery,Datatables,在以下两种情况中的一种情况下,我在尝试获取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
$("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);
有人能指出我做错了什么吗
谢谢。$(this).find(“td-input:checkbox”)
返回一个jQuery对象,该对象没有名称属性,而单击处理程序函数中的this
引用一个DOM对象,该对象没有名称属性
Try
HandleCheckedChanged(chkCtrl[0])代码>。在第一个示例中,将jQuery对象引用传递给HandleCheckedChanged
函数。在后者中,实际上是传递DOM元素
您应该将第一个更改为:
var chkCtrl = $(this).find("td input:checkbox").get(0);
是否确实正在解析元素,而不仅仅是试图从jQuery对象获取.name?分配处理程序时,DOM中似乎不存在该元素。。第二种情况下的事件委托似乎解决了“今天的定义在哪里”的问题??如果不是,您的意思是“todayDOW”?没有看到您的代码和datatables代码的顺序,也没有看到表是如何填充的,那么任何人都可以猜测问题出在Hanks dgvid。更改为chkCtrl[0]返回了dom对象,并且一切正常。