2015-11-19 90 views
1

我使用jQuery創建了一個表。我添加了一個row.child,它將在每個父行之後顯示。在第一頁上,這工作正常。但是在第二頁卻缺失了。jQuery row.child在第二頁上丟失

function format(d) { 
    return '' + 

      '<i style=";color:#9b9b9b; font-size:10px; Padding-left:50px"> Vertragsart - ' + d[4] + '&nbsp; | &nbsp; Intensität - ' + d[5] + '</i>' + 
      ''; 
} 

var $j = jQuery.noConflict(); 

$j('document').ready(function() { 
    var oTable = $j('#position_list').DataTable({ 
     "order": [[0, "desc"]], 
     "iDisplayLength": 50, 
     "oLanguage": { 
      "sLengthMenu": "Zeige _MENU_ Einträge", 
      "sSearch": "Suche:", 
      "sInfo": "Zeige _START_ bis _END_ von _TOTAL_ Einträgen", 
      "sInfoEmpty": "Zeige _START_ bis _END_ von _TOTAL_ Einträgen", 
      "sInfoFiltered": "(gefiltert aus _MAX_ Datensätzen)", 
      "oPaginate": { 
       "sNext": "Nächste", 
       "sPrevious": "Vorherige" 
      },  
     }, 
    }); 

    $j('.parentrow').closest('tr').each(function() {  
     var row = oTable.row(this); 
     var data = format(row); 
     row.child(format(row.data())).show(); 
    }); 
}); 
+0

我沒有你已瞭解與意味着「第一頁」和「第二頁」 – RiccardoC

+0

在桌子上有一個分頁的。在表格的第一頁上,它顯示了所有的子行。當我切換到第二頁chilrow缺失 –

+0

然後,我認爲你在分頁創建後應用函數,然後行不是「那裏」。在調用dataTable之前嘗試移動你的.each()函數來創建行,看看它是否能解決問題 – RiccardoC

回答

0

的問題是,你正在使用jQuery選擇行,但jQuery的只能訪問行目前的DOM。就像在評論中說的那樣,只有當前頁面的行在任何時候都在DOM中,所以這些是你的代碼將操作的唯一行。

要在整個表中運行jQuery選擇器,Datatables API具有$() method。它接受一個jQuery選擇器,它將在上運行,所有tr表上的元素和它們的後代元素,返回一個像jQuery(selector)這樣的jQuery對象。

那麼你只需要改變你的jQuery選擇了oTable.$(...)

oTable.$('.parentrow').closest('tr').each(function() {  
    var row = oTable.row(this); 
    var data = format(row); 
    row.child(format(row.data())).show(); 
}); 
+0

非常感謝,解決了我的問題。 –

0

使用drawCallback選項或draw事件的每個表,重繪時間打電話給你的代碼。

例如:

$j('#position_list').on('draw.dt', function(){ 
    $j('.parentrow').closest('tr').each(function(){ 
     var row = oTable.row(this); 
     var data = format(row); 
     row.child(format(row.data())).show(); 
    }); 
}); 
相關問題