2012-11-20 110 views
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); 
     } 

但是,如果我處理click事件,如下this.name返回一個值

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

有人能指出我在做什麼錯?

謝謝。

+1

你確定你解決的元素,而不僅僅是試圖從jQuery對象得到。名稱? –

+2

看起來像元素不存在於DOM當你分配處理程序..第二種情況下的事件委託似乎已經解決了問題 –

+0

todayDOW定義在哪裏?如果不是你的意思是「todayDOW」? –

回答

0

$(this).find("td input:checkbox")返回一個jQuery對象,它沒有名稱屬性,而點擊處理函數中的this引用了一個DOM對象,它具有name屬性。

嘗試使用HandleCheckedChanged(chkCtrl[0]);

+0

謝謝dgvid。更改爲chkCtrl [0]返回了dom對象,並且everthing正在工作。 – JerryKur

0

在你的第一個例子中,你傳入一個jQuery對象引用到HandleCheckedChanged函數。在後者中,您實際上正在傳遞DOM元素。

你應該改變先:

var chkCtrl = $(this).find("td input:checkbox").get(0); 
相關問題