Jquery datatables 监听上一页/下一页 ,页码,刷新列宽度

         由于使用了固定前两列的插件fixedcolumn,导致切换到下一页的时候,如果固定的某列字数太多,就会导致显示错乱,所以想找监听页码的函数,可以从下面两个函数找到答案:

官网的地址为:官网datatables监听上一页 ,还有一个更好的答案是在stacklow里面,连接如下:问答网站关于监听页码的方案 .官网的都试过都不行,类似于下面的代码:

var table = $('#example').DataTable();
 
$('#example').on( 'page.dt', function () {
    var info = table.page.info();
    $('#pageInfo').html( 'Showing page: '+info.page+' of '+info.pages );
} );

     上述的代码对于我这个版本的datatables没有用,后来采用上述的问题网站的方案,监听页码组件的a标签点击事件,首先找到页码控件的div的class,,进行监听即可:


          监听这个div下的a标签点击事件,代码如下:

      

$(".dataTables_paginate").on("click", "a", function() { 
	       alert("点击了上一页和下一页的按钮");
	});

        注意:这个代码需要放在datatables初始化完成之后才有用,放在ready并没有用,还有刷新宽度的函数为:table.fnAdjustColumnSizing();

       附注:以下是设置一个标志,当点击了上一页和下一页,就执行刷新列表宽度的函数的js,需要导入如下固定表格前几列的js:

<script type="text/javascript" src="media/js/jquery.dataTables.js"></script>
<!-- 引入表格的固定列的js工具文件 -->
<script type="text/javascript"
src="media/js/dataTables.fixedColumns.min.js"></script>

     <!-- 固定列的引入的样式 -->
<link rel="stylesheet" type="text/css"
href="media/css/dataTables.fixedColumns.css" />

以作参考:

var ServersideInforTable = function() {
	
	//固定表格之后,每次点击下一页/刷新表格,需要重新告诉表格刷新宽度,设置一个变量,防止success执行多次;
	var ifRefresh = false;

	if (!jQuery().dataTable) {
		return;
	}
	var selectType = jQuery("#typeselect  option:selected").val();
	if (selectType == -1) {
		alert("请选择状态!");
		return false;
	}

	$('#serverside_inforTable').show();
	$('#serverside_inforTable').DataTable().fnDestroy();
	var datatables_options ={
		"aLengthMenu" : [ [ 10, 20, 50, 100, -1 ],[ 10, 20, 50, 100, "All" ] ],
		"iDisplayLength" : 10,
		"sDom" : "<r>t<'float_left'i><'float_right_nexpage'p><'float_right_display'l>>",
		"oLanguage" : oLanguageData,
		"aoColumns" : aoColumnsData,
		// 切换下一页更新复选框的状态为不选中:重绘的回调函数,更新状态
		"fnDrawCallback" : function() {
			
			if (table != "" && !ifRefresh) {
				alert("重新调整表格success");
				ifRefresh = true;
				table.fnAdjustColumnSizing(); //解决切换页数导致的宽度不一致的问题
		    }
		},
		
		"fnRowCallback" : function (nRow, aData, iDataIndex) { 
			fnCallback(nRow, aData, iDataIndex,selectType);//会多次执行
		},
		"bAutoWidth": false,
		"bSort": false,
		"bProcessing" : false,
		"bServerSide" : true,
		"bDestroy": true,
		"sScrollX":"100%",
		"sAjaxSource": "audited.action?auditType=" + selectType, 
		"fnServerData" :function(sSource, aoData, fnCallback) {
			$.ajax({
				"type" : 'post',
				"url" : sSource,
				"dataType" : "json",
				"data" : aoData,
				"success" : function(resp) {
					fnCallback(resp);
					
					//$(".dataTables_scrollHeadInner  tr th:nth-child(2)").remove();
					//$(".dataTables_scrollHeadInner  tr th:nth-child(2)").remove();
					//$(".DTFC_RightWrapper").css("margin-left","-80px");
				},
				"error": function(resp) {
					alert("数据载入失败")
				}
			});
		}
	};
	//设置固定前三列的功能
	datatables_options["sScrollX"] = "100%";
	datatables_options["sScrollY"] = "450px";
	datatables_options["bScrollCollapse"] = true;

	// add this
	//datatables_options["sScrollXInner"] = '150%';
	//
	var table = $('#serverside_inforTable').DataTable(
			datatables_options);
	
	//qiulinhe:2016年10月31日16:51:42:设置前三列固定,冻结不随着滚动
	new $.fn.dataTable.FixedColumns(table, {
		"iLeftColumns" : 3,
		"sHeightMatch" : "auto"
	});
	//table.fnAdjustColumnSizing(false);
	
	//监听一下上一页下一页的点击事件
	$(".dataTables_paginate").on("click", "a", function() { 
	       alert("点击了上一页和下一页的按钮");
	       ifRefresh = false;//点击了页码切换的按钮,则重新设置可以刷新宽度的函数
	});
	
};


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值