jQuery数据表-启动速度慢;“正常”;html表格如开头所示
我使用的是jQuery DataTable插件,但我担心脚本加载似乎需要一些时间,因此我的网页总是先显示普通的html表,在所有脚本完成后,该表将成为DataTable。 我不认为这种外观是可以接受的,所以我希望能在这里得到一些建议。我是否可以使脚本更快,或者不显示前面的普通表? 顺便说一句,我是从我的Layout.cshtml头标签的_Scripts部分视图调用我的脚本的jQuery数据表-启动速度慢;“正常”;html表格如开头所示,jquery,performance,datatables,Jquery,Performance,Datatables,我使用的是jQuery DataTable插件,但我担心脚本加载似乎需要一些时间,因此我的网页总是先显示普通的html表,在所有脚本完成后,该表将成为DataTable。 我不认为这种外观是可以接受的,所以我希望能在这里得到一些建议。我是否可以使脚本更快,或者不显示前面的普通表? 顺便说一句,我是从我的Layout.cshtml头标签的_Scripts部分视图调用我的脚本的 @Html.Partial("_Scripts") (更新) 我试图隐藏该表,并在datatable初始化后显示它,
@Html.Partial("_Scripts")
(更新)
我试图隐藏该表,并在datatable初始化后显示它,但是,我得到了一个没有表头的datatable。知道为什么会这样吗
$('#stocktable').hide();
// Initialize data table
var myTable = $('#stocktable').dataTable({
// Try styling
"sScrollX": "100%",
"sScrollXInner": "100%",
"bScrollCollapse": true,
// To use themeroller theme
"bJQueryUI": true,
// To use TableTool plugin
"sDom": 'T<"clear">lfrtip',
// Allow single row to be selected
"oTableTools": {
"sRowSelect": "single"
},
"fnInitComplete": function () {
$('#stocktable').show();
}
$('#stocktable').hide();
//初始化数据表
var myTable=$('#stocktable').dataTable({
//试试造型
“sScrollX”:“100%”,
“sScrollXInner”:“100%”,
“崩溃”:没错,
//使用themeroller主题
“bJQueryUI”:没错,
//使用TableTool插件
“sDom”:“Tlfrtip”,
//允许选择单行
“可旋转工具”:{
“sRowSelect”:“单一”
},
“fnInitComplete”:函数(){
$('#stocktable').show();
}
[编辑以添加:此旧答案引用了以前的DataTables API。jQueryUI选项已弃用,此处提供了替换建议:此外,FNITCallback(与所有其他选项一样)删除了匈牙利符号,现在是initCallback]
原答覆如下:
我的警告是,我不熟悉_脚本部分视图,因此下面的建议是我将给某人的建议,只是以“正常”的方式包括和调用JavaScript:
bJQueryUI:true
),这意味着将jQuery UI类放在“普通”表格中,而不是等待DT添加它们$(“#myTable”).show()
或一些变体。在internet上搜索应该提供一些保留可访问性的优秀解决方案祝你好运!我认为你应该在_Layout.cshtml中加载脚本,毕竟这就是它的用途。局部视图实际上是指可以在其他区域重复使用的片段,或者至少是呈现的HTML内容 这就是说,一件简单的事情是隐藏表直到加载完成,或者甚至隐藏它并显示进度指示器 你可以这样做:
// .loadTable() is some function that loads your table and returns a bool indicating it's finished
// just remember to check this bool within the function itself as it will be called over and over until it returns true
while (!loadTable()) {
// maybe show a progress bar
if ($('#myTable').css('display') != 'none')) {
$('#myTable').hide(); // if it isn't already hidden, hide it
}
}
// hide progress bar
$('#myTable').show();
乌德帕特:
如果jQuery表插件有一个“success”或“finished”回调,只需在页面加载时隐藏该表,并在加载完成时显示它
$(document).ready(function () {
$('#myTable').hide();
// run plugin and .show() on success or finished
});
我也有同样的问题。请尝试以下方法:
var dTable=$("#detailtable").dataTable({
"bProcessing":true,
"bPaginate":false,
"sScrollY":"400px",
"bRetrieve":true,
"bFilter":true,
"bJQueryUI":true,
"bAutoWidth":false,
"bInfo":true,
"fnPreDrawCallback":function(){
$("#details").hide();
$("#loading").show();
//alert("Pre Draw");
},
"fnDrawCallback":function(){
$("#details").show();
$("#loading").hide();
//alert("Draw");
},
"fnInitComplete":function(){
//alert("Complete");
}
我知道这是一个很老的问题,但也许我能在将来帮助别人,怎么知道。。。 因此,经过几个小时后,我找到了唯一适合我的解决方案(完成后将加载该表):
.dn{
显示:无;
}
加载。。。
这里有东西
$(文档).ready(函数(){
showmetabel();
});
函数shoMeTheTable(){
var dTable=$('#myTable').dataTable({
“aoColumnDefs”:[
{bla,bla}
],
“语言”:{
“bla”:“bla”
},
“fnPreDrawCallback”:函数(){
},
“fnDrawCallback”:函数(){
$(“#加载”).addClass('dn');
$('#tabel').removeClass('dn');
},
“fnInitComplete”:函数(){
console.log(“Complete”)//可选,完成!!!
}
});
}
基于@hanzolo建议-以下是我的评论作为答案(以及我的数据表的外观):
我做了一个非常简单的解决方案,效果很好。 在DataTable初始化中,我使用了show()方法: …在HTML表中,我将样式显示为:无:
<table id="example" class="display" cellspacing="0" width="100%" style="display:none">
祝你好运!这是因为ColVis插件。从sDOM中删除“W”,您的表渲染将飞行(albiet withou下拉列表)由于顶部的过滤器,我的数据表在帖子之间跳跃 简单解决方案: 使用display:none隐藏表,然后在调用DataTable()之前使用jquery.fadeIn()。我的工作解决方案是一个不使用“display:none”隐藏表的“肮脏”技巧。普通的“display:none”样式会导致jquery数据表的初始化问题 首先,将数据表放在包装器div中:
<div id="dataTableWrapper" style="width:100%" class="dataTableParentHidden">
...data table html as described in jQuery Data Table documentation...
</div>
此解决方案不使用“显示:无”隐藏数据表<
$(document).ready(function() {
$('#example').dataTable({
"order": [[ 0, 'asc' ]]
});
$('#example').show();
} );
<table id="example" class="display" cellspacing="0" width="100%" style="display:none">
<div id="dataTableWrapper" style="width:100%" class="dataTableParentHidden">
...data table html as described in jQuery Data Table documentation...
</div>
.dataTableParentHidden {overflow:hidden;height:0px;width:100%;}
$('#yourDataTable').DataTable(...);
$('#dataTableWrapper').removeClass('dataTableParentHidden');