jQuery中Datatables增加跳转到指定页功能

下面一段代码是关于datatable增加跳转到指定页功能,具体代码如下所示:

var
mytable = $('#datatables');
  mytable.dataTable(
 {
    "sDom":
"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
    "sPaginationType":
"bootstrap",
    "bProcessing":
true,
    "bServerSide":
true,
    "sAjaxSource":
"/user/list",
    "aoColumns":
 [
      {
"mData":
"Id"
},
      {
"mData":
"Username"
},
      {"mData":function(obj){
        return
obj.group;
      }},
      {"mData":"yiyuan"},
      {"mData":function(obj){
        return
obj.keshi;
      }},
      {"mData":function(obj){
        if(obj.Status==1){
          return
"使用中";
        }else{
          return
"禁用";
        }
      }},
      {"mData":
function(obj){
        var
del="";
        if(isAdmin){
          del='<a
 data-title="'
+ obj.Id + '"
 class="btn btn-danger"><i class="icon-wrench icon-white" ></i>删除</a>';
        }
       return
'<a data-title="'
+ obj.Id + '"
 class="btn btn-success" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><i class="icon-edit icon-white"></i>修改</a>'
+'  '+del;
      },bSortable
 : false}
    ],
    "fnDrawCallback":
function(){
      var
oTable = $("#datatables").dataTable();
      $('#redirect').keyup(function(e){
        if($(this).val()
 && $(this).val()>0){
          var
redirectpage = $(this).val()-1;
        }else{
          var
redirectpage = 0;
        }
        oTable.fnPageChange(
 redirectpage );
      });
    }
   });
bootstrap插件形式:
/*
 Set the defaults for DataTables initialisation */
$.extend(
true,
 $.fn.dataTable.defaults, {
  "sDom":
"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
  "sPaginationType":
"bootstrap",
  "oLanguage":
 {
    "sSearch":
"快速搜索:",
    "bAutoWidth":
true,
    "sLengthMenu":
"每页显示
 _MENU_ 条记录",
    "sZeroRecords":
"Nothing
 found - 没有记录",
    "sInfo":
"_START_
 到 _END_ 条,共 _TOTAL_ 条",
    "sInfoEmpty":
"显示0条记录",
    "sInfoFiltered":
"(从
 _MAX_ 条中过滤)",
    "sProcessing":"<div
 style=''><img src='../static/img/loader.gif'><span>加载中...</span></div>",
    "oPaginate":
 {
      "sPrevious":
"",
      "sNext":
"",
      "sLast":
">>",
      "sFirst":
"<<"
    }
  }
}
 );
/*
 Default class modification */
$.extend(
 $.fn.dataTableExt.oStdClasses, {
  "sWrapper":
"dataTables_wrapper
 form-inline"
}
 );
/*
 API method to get paging information */
$.fn.dataTableExt.oApi.fnPagingInfo
 = function
( oSettings )
{
  return
{
    "iStart":
 oSettings._iDisplayStart,
    "iEnd":
 oSettings.fnDisplayEnd(),
    "iLength":
 oSettings._iDisplayLength,
    "iTotal":
 oSettings.fnRecordsTotal(),
    "iFilteredTotal":
 oSettings.fnRecordsDisplay(),
    "iPage":
 Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
    "iTotalPages":
 Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
  };
};
/*
 Bootstrap style pagination control */
$.extend(
 $.fn.dataTableExt.oPagination, {
  "bootstrap":
 {
    "fnInit":
function(
 oSettings, nPaging, fnDraw ) {
      var
oLang = oSettings.oLanguage.oPaginate;
      var
fnClickHandler = function
( e ) {
        e.preventDefault();
        if
( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
          fnDraw(
 oSettings );
        }
      };
      $(nPaging).addClass('pagination').append(
        '<ul>'+
        '<li
 class="first disabled"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >'+oLang.sFirst+'</a></li>'+
        '<li
 class="prev disabled"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >← '+oLang.sPrevious+'</a></li>'+
        '<li
 class="next disabled"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >'+oLang.sNext+'
 → </a></li>'+
        '<li
 class="last disabled"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >'+oLang.sLast+'</a></li>'+
        '<input
 type="text" style="width: 30px;padding-top: 5px;padding-bottom: 5px;height: 18px;border-left: 0px;border-radius: 0px 4px 4px 0px;" id="redirect" class="redirect">'+
        '</ul>'
        );
     //datatables分页跳转
     $(nPaging).find(".redirect").keyup(function(e){
       var
ipage = parseInt($(this).val());
       var
oPaging = oSettings.oInstance.fnPagingInfo();
       if(isNaN(ipage)
 || ipage<1){
         ipage
 = 1;
       }else
if(ipage>oPaging.iTotalPages){
         ipage=oPaging.iTotalPages;
       }
       $(this).val(ipage);
        ipage--;
       oSettings._iDisplayStart
 = ipage * oPaging.iLength;
       fnDraw(
 oSettings );
     });
      var
els = $('a',
 nPaging);
      $(els[0]).bind(
'click.DT',
 {
        action:
"first"
      },
 fnClickHandler );
      $(els[1]).bind(
'click.DT',
 {
        action:
"previous"
      },
 fnClickHandler );
      $(els[2]).bind(
'click.DT',
 {
        action:
"next"
      },
 fnClickHandler );
      $(els[3]).bind(
'click.DT',
 {
        action:
"last"
      },
 fnClickHandler );
    },
    "fnUpdate":
function
( oSettings, fnDraw ) {
      var
iListLength = 5;
      var
oPaging = oSettings.oInstance.fnPagingInfo();
      var
an = oSettings.aanFeatures.p;
      var
i, ien, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);
      if
( oPaging.iTotalPages < iListLength) {
        iStart
 = 1;
        iEnd
 = oPaging.iTotalPages;
      }
      else
if
( oPaging.iPage <= iHalf ) {
        iStart
 = 1;
        iEnd
 = iListLength;
      }
else
if
( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {
        iStart
 = oPaging.iTotalPages - iListLength + 1;
        iEnd
 = oPaging.iTotalPages;
      }
else
{
        iStart
 = oPaging.iPage - iHalf + 1;
        iEnd
 = iStart + iListLength - 1;
      }
      for
( i=0, ien=an.length ; i<ien ; i++ ) {
        //
 Remove the middle elements
        ($('li:gt(1)',
 an[i]).filter(':not(:last)')).filter(':not(:last)').remove();
        //
 Add the new list items and their event handlers
        for
( j=iStart ; j<=iEnd ; j++ ) {
          sClass
 = (j==oPaging.iPage+1) ? 'class="active"'
: '';
          $('<li
 '+sClass+'><a
 href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >'+j+'</a></li>')
          .insertBefore(
 $('.next',
 an[i])[0] )
          .bind('click',
function
(e) {
            e.preventDefault();
            oSettings._iDisplayStart
 = (parseInt($('a',
this).text(),10)-1)
 * oPaging.iLength;
            fnDraw(
 oSettings );
          }
 );
        }
        //
 Add / remove disabled classes from the static elements
        if
( oPaging.iPage === 0 ) {
          $('li:lt(2)',
 an[i]).addClass('disabled');
        }
else
{
          $('li:lt(2)',
 an[i]).removeClass('disabled');
        }
        if
( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
          $('.next',
 an[i]).addClass('disabled');
          $('li:last',
 an[i]).addClass('disabled');
        }
else
{
          $('.next',
 an[i]).removeClass('disabled');
          $('li:last',
 an[i]).removeClass('disabled');
        }
      }
    }
  }
}
 );
/*
 *
 TableTools Bootstrap compatibility
 *
 Required TableTools 2.1+
 */
if
( $.fn.DataTable.TableTools ) {
  //
 Set the classes that TableTools uses to something suitable for Bootstrap
  $.extend(
true,
 $.fn.DataTable.TableTools.classes, {
    "container":
"DTTT
 btn-group",
    "buttons":
 {
      "normal":
"btn",
      "disabled":
"disabled"
    },
    "collection":
 {
      "container":
"DTTT_dropdown
 dropdown-menu",
      "buttons":
 {
        "normal":
"",
        "disabled":
"disabled"
      }
    },
    "print":
 {
      "info":
"DTTT_print_info
 modal"
    },
    "select":
 {
      "row":
"active"
    }
  }
 );
  //
 Have the collection use a bootstrap compatible dropdown
  $.extend(
true,
 $.fn.DataTable.TableTools.DEFAULTS.oTags, {
    "collection":
 {
      "container":
"ul",
      "button":
"li",
      "liner":
"a"
    }
  }
 );
}

好了,下面看下jQuery datatable中加入双击跳转功能

$('#topicDg tbody').on('dblclick','tr',function(){
 var self=$(this);
 var id=self.find('.td-id').text();
 var name=self.find('.td-name').text();
 creatIframe("/post/postList.do?id="+id+"&name="+name,"帖子管理");
}); 

ps:点击话题列表中的一行,跳转到帖子列表中。

(0)

相关推荐

  • jQuery插件dataTables添加序号列的方法

    官网方法实例: $(document).ready(function() { var t = $('#example').DataTable({ "columnDefs": [{ "searchable": false, "orderable": false, "targets": 0 }], "order": [[1, 'asc']] }); t.on('order.dt search.dt', func

  • jQuery DataTables插件自定义Ajax分页实例解析

    一.问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分类效果. 后端的分页接口已经写好了,不涉及条件查询,需要传入页码(pageNo)和页面显示数据条数(pageSize),显示相应页的显示记录,且不能修改后端接口. 二.分析 先来分析下分页实现. 一是后端分页:这种情况下,在后端很容易实现,在官网上有示例,不多说明. 二是前端分页:前端分页也是支持的,不过需要一次把所有数据都获取到才可以. 看到这里,问题来了.由于后端在目前的情况下是更改不

  • jQuery插件DataTables分页开发心得体会

    写Blog目的:不是为人气,只是留份笔记:啰嗦不要紧,只怕有遗漏,以后想不起来. 官网:https://datatables.net/ 中文官网:http://datatables.club/ 开发环境:Python 3.6.0.Anaconda 4.3.1.Django.JetBrains PyCharm 2017.1.5 按我项目的开发过程简单整理. 1.第一版本,无分页. 在此之前有用到过DataTables(更多的是easyui中的Datagrid,另之前服务端是PHP),因此想着前端/

  • jQuery表格插件datatables用法总结

    DataTables是一个jQuery的表格插件.这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格. 官方网站及其下载地址:http:/www.datatables.net 当前最新版为1.10.2,读者可点此本站下载. 其主要特点如下: 1.自动分页处理 2.即时表格数据过滤 3.数据排序以及数据类型自动检测 4.自动处理列宽度 5.可通过CSS定制样式 6.支持隐藏列 7.易用 8.可扩展性和灵活性 9.国际化 10.动态创建表格 11.免费的 使用方

  • jquery+php实现导出datatables插件数据到excel的方法

    本文实例讲述了jquery+php实现导出datatables插件数据到excel的方法.分享给大家供大家参考.具体如下: DataTables是一个jQuery的表格插件.这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格.主要特点: 1. 自动分页处理 2. 即时表格数据过滤 3. 数据排序以及数据类型自动检测 4. 自动处理列宽度 5. 可通过CSS定制样式 6. 支持隐藏列 7. 易用 8. 可扩展性和灵活性 9. 国际化 10.动态创建表格 11.

  • jQuery表格插件datatables用法详解

    一.Datatables简介 DataTables是一个jQuery的表格插件.这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格.主要特点: 自动分页处理 即时表格数据过滤 数据排序以及数据类型自动检测 自动处理列宽度 可通过CSS定制样式 支持隐藏列 易用 可扩展性和灵活性 国际化 动态创建表格 免费的 二.如何使用 在做后台的时候并没有美工和前端工程师来配合你做页面,为了显示数据并有一定的美感,我们可以使用jQuery的DataTables插件来帮助我

  • 利用JQuery实现datatables插件的增加和删除行功能

    在学习过程中遇到了这个利用JQuery对表格行的增加和删除,特记录下来以供初学者参考. 下面是主要的代码: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>zengjia he shancu </title> <meta charset="utf-8" /> <script src=&quo

  • jquery表格datatables实例解析 直接加载和延迟加载

    参考自官方文档,需要引入jquery.js,jquery.dataTables.js,dataTables.bootstrap.js(可选), 由于时间紧,省略了很多,所以总结份简化版的仅供参考. 1.直接加载,这个比较简单,如下 <div id="tid" class="col-sm-12 col-md-12"> <div id="secondtid" hidden="hidden"></div

  • jQuery.datatables.js插件用法及api实例详解

    1.DataTables的默认配置 $(document).ready(function() { $('#example').dataTable(); } ); 示例:http://www.guoxk.com/html/DataTables/Zero-configuration.html 2.DataTables的一些基础属性配置 "bPaginate": true, //翻页功能 "bLengthChange": true, //改变每页显示数据数量 "

  • jQuery表格插件datatables用法汇总

    DataTables是一个jQuery的表格插件,本文为大家分享了表格插件datatables用法,介绍了基础的部分知识,具体内容如下 一.初始化 在页面中 <!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.11/css/jquery.dataTables.css&

随机推荐