我正在使用一个
Jquery Datatables表与bPaginate = false,sScrollY是一些固定的高度.最终我想要在window.resize事件上调整表的大小.
为了使这个工作,我已经建立了一个较小的测试用例:在下面的代码段中,我希望表单调整大小当我点击按钮
HTML:
<!DOCTYPE html> <html> <head> <link class="jsbin" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script> <script type="text/javascript" language="javascript" src="http://www.datatables.net/release-datatables/media/js/jquery.dataTables.js"></script> <Meta charset=utf-8 /> <title>JS Bin</title> </head> <body> <input id="button" type="button" value="Click me!" /> <table cellpadding="0" cellspacing="0" border="0" class="display" id="example"> <thead> <tr> <th>Rendering engine</th> <th>Browser</th> <th>Platform(s)</th> <th>Engine version</th> <th>CSS grade</th> </tr> </thead> <tbody> <tr class="odd gradeX"> <td>Trident</td> <td>Internet Explorer 4.0</td> <td>Win 95+</td> <td class="center"> 4</td> <td class="center">X</td> </tr> <tr class="even gradeC"> <td>Trident</td> <td>Internet Explorer 5.0</td> <td>Win 95+</td> <td class="center">5</td> <td class="center">C</td> </tr> <tr class="odd gradeA"> <td>Trident</td> <td>Internet Explorer 5.5</td> <td>Win 95+</td> <td class="center">5.5</td> <td class="center">A</td> </tr> </tbody> <tfoot> <tr> <th>Rendering engine</th> <th>Browser</th> <th>Platform(s)</th> <th>Engine version</th> <th>CSS grade</th> </tr> </tfoot> </table> </body> </html>
使用Javascript:
$('#button').click(function() { console.log('Handler for .click() called.'); table = $('#example').dataTable(); settings = table.fnSettings(); console.log('old:' + settings.oScroll.sY); settings.oScroll.sY = '150px'; console.log('new:' + settings.oScroll.sY); table.fnDraw(false); }); $('#example').dataTable({ "sScrollY": "350px","bPaginate": false,"bJQueryUI": true });
控制台输出如预期:
Handler for .click() called. old:350px new:150px
但表不更新!任何想法我做错了什么?
可以在这里找到一个实例:http://jsbin.com/anegiw/12/edit
解决方法
好的,似乎很好的工作是做点数据添加到datatbables框架中的元素:
$(window).resize(function() { console.log($(window).height()); $('.dataTables_scrollBody').css('height',($(window).height() - 200)); }); $('#example').dataTable({ "sScrollY": ($(window).height() - 200),"bJQueryUI": true });
此示例使窗口可以平滑调整表.