2015-11-19 19 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(); 
    }); 
}); 
相关问题