2013-03-15 39 views
2

我可以通過以下簡單的方法訪問數據行:訪問數據的行內單擊

$('#received-body tr').click(function(){ 
    aData = received_table.fnGetData(this); 
    selected_received_id = aData[0]; 
    alert(selected_received_id); 
}); 

但在一個我不能叫.received-update按鈕訪問它們行:

$('#received-body .received-update').click(function(){ 
    alert('update'); // works 
    aData = received_table.fnGetData($(this).parents('tr')); // fails 
    selected_received_id = aData[0]; 
    alert('update:' + selected_received_id);      
}); 

任何幫助表示讚賞

+0

其錯誤出現或使用嘗試console.log得到錯誤 – ammu 2013-03-15 16:41:43

回答

0

您可能需要使用最接近的parents()可能在向一個以上行。儘管最接近DOM層次結構的第一個匹配。

aData = recieved_table.fnGetData($(this).closest('tr')); // fails 
+0

我試過了,它沒有工作 'co de' TypeError:a.nodeName is undefined [Break On This Error] \t ..._ DT_Input).val(a)} catch(o){h(b [c] ._ DT_Input).val(a) }}}其他h.extend(g.aoPreSearc ... 'code' – 2013-03-19 09:49:14

+0

您可以製作小提琴或添加html嗎? – Adil 2013-03-19 09:52:29

0
aData = recieved_table.fnGetData($(this).parent('tr')); 

嘗試.parent()而不是.parents()因爲.parents()獲取每個元素的父在當前匹配的元素。 .parent()只有在tr是tr的直接子女時纔有效。在這種情況下.closest()將是理想的,如下所示。

aData = recieved_table.fnGetData($(this).closest('tr')); 

如果上面沒有爲你的工作,嘗試filter方法減少匹配的元素。

+0

父給我此錯誤... '代碼' 類型錯誤:a.nodeName未定義 [打破此錯誤] \t ..._ DT_Input).VAL的(a)}趕上(O){H(二[c] ._ DT_Input).val(a)}}}否則h.extend(g.aoPreSearc ... jquery .... min.js(line 105) 'code' – 2013-03-19 09:52:16

+0

所以使用最接近的。 – 2013-03-19 09:53:40

0

@Stephen Brown,如果您發現如何獲得價值,請您提供解決方案。我有完全相同的問題。我已經在這篇文章中嘗試了所有的方法,但沒有運氣。我有以下代碼。

"fnDrawCallback": function() { 
     $(".select_row ").click(function(e){ 
      dataId = $(this).data("id"); 
      tr=$(this).closest("tr")[0]; 
      getSelected(tr, true); 
     }); 
    } 

而且功能(studentDataTable是數據表)

function getSelected(tr, tableLoaded){ 
     console.log($(tr)); 
     console.log(tr);    
     if (tableLoaded){ 
      data = studentDataTable.fnGetPosition($(tr)); 
     } 
    } 

的打印的console.log以下

Object[tr.even] and <tr class="even"> respectively 

我試過$(TR),TR等諸多但它總是拋出錯誤 TypeError:a.nodeName未定義 ... ta [d]!== m?c.aoData [d] ._ aData:null} return Y(c)}; this.fnGetNodes =福(a){var b ...

任何幫助深表感謝

編輯
得到它以這種方式工作(不知道我以前做錯了)

 "aoColumnDefs": [ 
       { "fnRender": function(oObj) { 
          return '<input type="checkbox" onClick=getSelected(this); data-id="' + oObj.aData.id + '" value="' + oObj.aData.id + '" />'; 
         }, 
       "bSortable": false, 
       "aTargets": [0] 
       }, 

和功能

function getSelected(checkbox){ 
     console.log($(checkbox)); 
     if ($(checkbox).is(':checked')) { 
       tr=$(checkbox).closest("tr")[0]; 
       console.log(tr); 
       data = studentDataTable.fnGetData(tr); 
       console.log(data['groupsList']); 
      } 
    } 
4

您可以通過更換

來解決您的問題
aData = received_table.fnGetData($(this).parents('tr')); 

aData = received_table.fnGetData($(this).parents('tr')[0]); 


此相同的語法也需要調用received_table.fnGetPosition()

0

下面的代碼會有所幫助,

var table = $('#tableID').DataTable(); 
var row_data; 
$('#tableID tbody').on('click', 'button', function() { 
    row_data = table.row($(this).parents('tr')).data(); 
    console.log(row_data); // you will get the row data 
}); 
相關問題