2012-02-23 14 views
1

我在JQuery 1.8.6中使用Jquery DataTables 1.7.6。我試圖設置一個數據表,在一行中有一個按鈕,然後捕獲該按鈕的點擊以將該行移動到另一個表。我在獲取DataTable中的數據時遇到問題以調用add和remove函數。通過點擊綁定訪問數據表數據

<script type="text/javascript"> 
    $(document).ready(function() { 
     var eligibleCreatives = $('#EligibleCreativeTableId').dataTable({ 
      "bJQueryUI": true, 
      "bStateSave": true, 
      "bAutoWidth": false, 
      "aoColumnDefs": [ 
       { "bSortable": false, "aTargets": [0] }, 
       { "bVisible": false, "aTargets": [3] }, 
      ], 
      "aaSorting": [[1, "asc"]] 
     }); 
     associatedCreatives = $('#AssociatedCreativeTableId').dataTable({ 
      "bJQueryUI": true, 
      "bStateSave": true, 
      "bAutoWidth": false, 
      "aoColumnDefs": [ 
       { "bSortable": false, "aTargets": [0] }, 
       { "bVisible": false, "aTargets": [3] }, 
      ], 
      "aaSorting": [[1, "asc"]] 
     }); 

     eligibleCreatives.$('tr').click(function() { 
      var data = .fnGetData(this); 
      // this tells me that eligibleCreatives has no method $ 

     }); 


     $('#disassociate-creative').click(function() { 
     //I can't get at the actual row node here. 
     var data = associatedCreatives.fnGetData($(this).closest('tr')[0]); 
     eligibleCreatives.fnAddData(data); 
     associatedCreatives.fnDeleteRow(this); 
     return false; 
     }); 
     $('#associate-creative').click(function() { 
     var data = associatedCreatives.fnGetData($(this).closest('tr')[0]); 
     associatedCreatives.fnAddData(data); 
     eligibleCreatives.fnDeleteRow(this); 
     return false; 
     }); 

    }); 
    function fnClickAssociate() { 
     $('#AssociatedCreativeTableId').dataTable().fnDeleteRow(); 
     $('#AssociatedCreativeTableId').dataTable().fnAddData([]); 
    } 
</script> 

回答

1

我認爲問題是fnGetData返回一個特定行內容的數據對象,而不是節點本身。但是fnAddDatafnDeleteRow每個都需要TR節點,而不是數據對象。有兩種方法來解決這個問題:

選項1:如果您確信$(this).closest('tr')[0]正在返回你想要的行整個TR元素,然後更改您的每一個click功能的第一行:

var data = $(this).closest('tr')[0]; 

這應該在接下來的兩行中提供適當的TR節點執行操作的功能。

選項2:如果你不確定該$(this).closest('tr')[0]正在恢復整個TR元素(可以通過console.log()檢查這個-ing它來查看是否返回相應的內容),那麼我會考慮使用Datatable.net的fnGetPosition這個按鈕所在的TD元素。我發現它更加靈活,並且它總是會返回一個可以用於fnAddDatafnDeleteRow的元素。

祝你好運!