2014-02-07 47 views
8

iCheck仅在第一页上使用数据表。当我导航到任何其他页面时,它会显示复选框,但它们没有应用iCheck。此代码可以帮助但不能100%工作。DataTables + iCheck +分页

function turn_on_icheck(checkboxClass) 
{ 
    $('input[type=checkbox]').iCheck({ 
     checkboxClass: checkboxClass 
    }); 
} 
$('.data-table').on('page', function() { 
    turn_on_icheck(); 
}); 

当我去到第2页就说明一切罚款了,但如果我回到以前访问过的网页,该复选框不存在。在我看来,它会导致错误,因为已经有一个iCheck的实例在那里运行。有没有办法检查是否有人跑步?

回答

13

我有与asp.net网格相同的问题。请使用on draw.dt event,将在寻呼和显示菜单帮助以及

$('.data-table').on('draw.dt', function() { 
    turn_on_icheck(); 
}); 
+1

这工作PE rfectly。谢谢! – reformed

+1

很高兴帮助:) @reformed – hsobhy

+0

假设您正在使用分页,您在回调工作时遇到任何问题,如在另一个页面上('isChecked')? –

1

当刷新数据表中的值,新的输入是渲染和输入都需要重新申请的I检查funtion。

$(document).ajaxComplete(function() { 
    $('input[type=checkbox]').iCheck({ 
     checkboxClass: checkboxClass 
    }); 
}); 
+0

请添加一些解释如何解决了问题 – Huangism

+0

当数据表刷新值时,新的输入被渲染,并且输入需要再次应用icheck功能。 – platix

+1

您可以编辑问题并添加解释 – Huangism

0

这是我如何解决它......你应该给I检查一段时间,直到它调用的数据表功能之前完成...使用jQuery的时候功能

function Typer(callback) 
{  
    if ($("input.flat")[0]) 
    { 
     $('input.flat').iCheck({ 
      checkboxClass: 'icheckbox_flat-green', 
      radioClass: 'iradio_flat-green' 
     }); 
    } 
} 


function enableDataTableMain() 
    { 
    var table = $('#tableWithData').DataTable({ 
    "aoColumnDefs": [ 
     { 
      'bSortable': false, 
      'aTargets': [0] 
     } //disables sorting for column one 
    ], 
    "tableTools": { 
     "sSwfPath": "swf/copy_csv_xls_pdf.swf" 
    }});      
    var tt = new $.fn.dataTable.TableTools(table); 
    $(tt.fnContainer()).insertBefore('div.functionDiv'); 
} 


    $(document).ready(function() { 
    $.when(Typer()).done(function() { 
     enableDataTableMain(); 
    }); 
}); 
2

下面是一个简单的办法做到这一点:

$('.inputClass').iCheck({ 
     handle: 'checkbox', 
     checkboxClass: 'icheckbox_flat-blue' 
    }); 

source 好运