亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

創建自己的jquery表格插件

2019-11-20 11:09:46
字體:
來源:轉載
供稿:網友

在模仿easyui的dataGrid表格插件的同時,自己去封裝了一個。實現了基本的json數據的動態加載,自動分頁,全選全不選,鼠標懸浮變色,隔行變色等

由于涉及到ajax訪問,所以必須部署到iis上才能看出效果,先給大家看一下效果圖:

css樣式

/* CSS Document */body { font: 14px/1.43 "Helvetica Neue", Tahoma, "Microsoft YaHei", Arial; color: #253443; margin: 0 auto; padding: 0 auto;}table { border-collapse: collapse; border-spacing: 0; background: #FFF; font-size: 12px; width: 100%; border: 1; width: 100%;}thead { display: table-header-group; vertical-align: middle; border-color: inherit;}tr { display: table-row; vertical-align: inherit; border-color: inherit;}table thead tr { background-color: #E6F0FF;}table thead tr th { padding: 5px 8px; font-weight: normal; color: #999; border-bottom: 1px solid #B50802; vertical-align: bottom; line-height: 20px;}tbody { display: table-row-group; vertical-align: middle; border-color: inherit;}table tbody tr td { padding: 8px; border-top: 0px; border-bottom: 1px solid #DDD; vertical-align: middle; line-height: 20px;}table tfoot tr td { width: 100%; background-color: #F4F4F4; height: 20px; padding: 8px 0px; color: #000;}table tfoot tr td input { width: 30px; float: left;}table tfoot tr td span { display: inline-block; cursor: pointer; height:20px; padding:0 10px; float: left;}.mouseover { background-color: #EAF2FF; color: #000;}

JSON文件

{   "total":16,  "rows": [   {    "ID": 1,    "name": "公共js和公共css樣式部分",    "descrtion":"描述公共js和公共css樣式部分",    "Price": 950   },   {    "ID": 2,    "name": "自定義特性(如:皮膚風格選擇等)部分",    "descrtion":"描述自定義特性(如:皮膚風格選擇等)",    "Price": 5500   },    {      "ID": 3,    "name": "具體定義及實現部分",    "descrtion":"描述具體定義及實現部分",    "Price": 150   },   {    "ID": 4,    "name": "對外開放部分",    "descrtion":"描述對外開放部分",    "Price": 650   },   {    "ID": 5,    "name": "公共js和公共css樣式部分",    "descrtion":"描述公共js和公共css樣式部分",    "Price": 950   },   {    "ID": 6,    "name": "匹配所有大于給定索引值的元素",    "descrtion":"描述匹配所有大于給定索引值的元素",    "Price": 5500   },    {      "ID": 7,    "name": "查找第二第三行,即索引值是1和2,也就是比0大",    "descrtion":"描述查找第二第三行,即索引值是1和2,也就是比0大",    "Price": 150   },   {    "ID": 8,    "name": "從 0 開始計數",    "descrtion":"從 0 開始計數",    "Price": 650   },    {    "ID": 9,    "name": "公共js和公共css樣式部分",    "descrtion":"描述公共js和公共css樣式部分",    "Price": 950   },   {    "ID": 10,    "name": "自定義特性(如:皮膚風格選擇等)部分",    "descrtion":"描述自定義特性(如:皮膚風格選擇等)",    "Price": 5500   },    {      "ID": 11,    "name": "具體定義及實現部分",    "descrtion":"描述具體定義及實現部分",    "Price": 150   },   {    "ID": 12,    "name": "對外開放部分",    "descrtion":"描述對外開放部分",    "Price": 650   },   {    "ID": 13,    "name": "公共js和公共css樣式部分",    "descrtion":"描述公共js和公共css樣式部分",    "Price": 950   },   {    "ID": 14,    "name": "匹配所有大于給定索引值的元素",    "descrtion":"描述匹配所有大于給定索引值的元素",    "Price": 5500   },    {      "ID": 15,    "name": "查找第二第三行,即索引值是1和2,也就是比0大",    "descrtion":"描述查找第二第三行,即索引值是1和2,也就是比0大",    "Price": 150   },   {    "ID": 16,    "name": "從 0 開始計數",    "descrtion":"從 0 開始計數",    "Price": 650   }  ] }

jquery代碼

// JavaScript Document$(function () { var dataGrid = function (ele, opt) {  this.defaults = {   //id   id: "",   //請求url   url: null,   //表頭格式   columns: null,   //是否分頁   pagination: false,   //是否隔行變色   isoddcolor: false,   //是否搜索欄   searchnation:false,   //頁顯示   pagesize: 5,   //頁索引   pageindex: 1,   //總頁數   totalpage: null   }  this.settings = $.extend({}, this.defaults, opt); } dataGrid.prototype = {  _id:null,  _op:null,  init: function () {   this._id=this.settings.id;   _op=this;   this.create();   this.bindEvent();  },  create: function () {   //初始化元素   this.InitializeElement();   //初始化表頭   this.createTableHead();   //初始化動態行   this.createTableBody(1);   //初始化搜索框   //if(this.settings.searchnation) this.createsearchbox();   //選擇是否分頁   if (this.settings.pagination) this.createTableFoot();  },  bindEvent: function () {   //添加上一頁事件   this.registerUpPage();   //添加下一頁事件   this.registerNextPage();   //添加首頁事件   this.registerFirstPage();   //添加最后一頁事件   this.registerlastPage();   //添加跳轉事件   this.registerSkipPage();   //添加鼠標懸浮事件   this.registermousehover();   //添加隔行變色   this.registerchangebgcolor();   //添加全選全不選事件   this.registercheckall();  },  //初始化元素  InitializeElement: function () {   //var id = this.settings.id;   $("#"+this._id).empty().append("<thead><tr></tr></thead><tbody></tbody><TFOOT></TFOOT>");  },  //循環添加表頭  createTableHead: function () {   var headcols = this.settings.columns;   for (var i = 0; i < headcols.length; i++) {    if (headcols[i].field == 'ck') $("table[id='" + this._id + "'] thead tr").append("<th width='50px'><input name='chkall' type='checkbox'></th>");    else $("table[id='" + this._id + "'] thead tr").append("<th width=" + headcols[i].width + " align=" + headcols[i].align + ">" + headcols[i].title + "</th>");   }  },  //循環添加行  createTableBody: function (pn) {   var columns = _op.settings.columns;   var json = this.getAjaxDate( _op.settings.url, null);   //總頁數=向上取整(總數/每頁數)    _op.settings.totalpage = Math.ceil((json.total) / _op.settings.pagesize);   //開始頁數   var startPage = _op.settings.pagesize * (pn - 1);   //結束頁數   var endPage = startPage + _op.settings.pagesize;   var rowsdata = "";   for (var row = startPage; row < endPage; row++) {    if (row == json.rows.length) break;    rowsdata += "<tr>";    for (var colindex = 0; colindex < columns.length; colindex++) {     if (columns[colindex].field == 'ck') rowsdata += '<td width="50px" align="center"><input name="chk" type="checkbox"></td>'     else rowsdata += '<td width=' + columns[colindex].width + ' align=' + columns[colindex].align + '>' + json.rows[row][columns[colindex].field] + '</td>';    }    rowsdata += "</tr>";   }   $("table[id='" + this._id + "'] tbody").empty().append(rowsdata);   $("#currentpageIndex").html(pn);   this.registermousehover();  },  //初始化分頁  createTableFoot: function () {   var footHtml = "<tr><td>";   footHtml += "<span id='countPage'>第<font id='currentpageIndex'>1</font>/" + _op.settings.totalpage + "頁</span>";   footHtml += "<span id='firstPage'>首頁</span>";   footHtml += "<span id='UpPage'>上一頁</span>";   footHtml += "<span id='nextPage'>下一頁</span>";   footHtml += "<span id='lastPage'>末頁</span>";   footHtml += "<input type='text'/><span id='skippage'>跳轉</span>";   footHtml += "</td></tr>";   $("table[id='" + this._id + "'] tfoot").append(footHtml);   $("table[id='" + this._id + "'] tfoot tr td").attr("colspan", "5");  },  //添加鼠標懸浮事件  registermousehover: function () {   //添加鼠標懸浮事件   $("table[id='" + this._id + "'] tbody tr").mouseover(function () {    $(this).addClass("mouseover");   }).mouseleave(function () {    $(this).removeClass("mouseover");   });  },  //添加隔行變色事件  registerchangebgcolor: function () {   //添加隔行變色   if (this.settings.isoddcolor) $("table[id='" + this._id + "'] tr:odd").css("background-color", "#A77C7B").css("color", "#fff");  },  //添加全選全不選事件  registercheckall: function () {   //添加全選全不選事件   $("input[name='chkall']").click(function () {    if (this.checked) {     $("input[name='chk']").each(function () {      $(this).attr("checked", true);     });    } else {     $("input[name='chk']").each(function () {      $(this).attr("checked", false);     });    }   });  },  //添加首頁事件  registerFirstPage: function () {   $("#firstPage").click(function(){    _op.settings.pageindex = 1;    _op.createTableBody( _op.settings.pageindex);   });  },  //添加上一頁事件  registerUpPage: function () {   $("table").delegate("#UpPage", "click",   function () {    if ( _op.settings.pageindex == 1) {     alert("已經是第一頁了");     return;    }    _op.settings.pageindex = _op.settings.pageindex - 1;    _op.createTableBody(_op.settings.pageindex);   });  },  //添加下一頁事件  registerNextPage: function () {   $("table").delegate("#nextPage", "click",   function () {    if (_op.settings.pageindex == _op.settings.totalpage) {     alert("已經是最后一頁了");     return;    }    _op.settings.pageindex = _op.settings.pageindex + 1;    _op.createTableBody(_op.settings.pageindex);   });  },  //添加尾頁事件  registerlastPage: function () {   $("table").delegate("#lastPage", "click",   function () {     _op.settings.pageindex = _op.settings.totalpage;    _op.createTableBody( _op.settings.totalpage);   });  },  //添加頁數跳轉事件  registerSkipPage: function () {   $("table").delegate("#skippage", "click",   function () {    var value = $("table[id='" + this._id + "'] tfoot tr td input").val();    if (!isNaN(parseInt(value))) {     if (parseInt(value) <= _op.settings.totalpage) _op.createTableBody(parseInt(value));     else alert("超出頁總數");    } else alert("請輸入數字");   });  },  //添加異步ajax事件  getAjaxDate: function (url, parms) {   //定義一個全局變量來接受$post的返回值   var result;   //用ajax的同步方式   $.ajax({    url: url,    async: false,    //改為同步方式    data: parms,    success: function (data) {     result = data;    }   });   return result;  } } $.fn.grid = function (options) {  var grid = new dataGrid(this, options);  return this.each(function () {   grid.init();  }); }})

html調用

<!doctype html><html><head><meta charset="utf-8"><title>無標題文檔</title><script src="jquery-1.8.0.min.js"></script><link rel="stylesheet" type="text/css" href="style.css"><script src="pagetion.js"></script><script type="text/javascript">$(function(){ $("#dg").grid({   id:"dg",   url:"data.json",   columns: [       {field:'ck',checkbox:true},       { field: 'ID', title: '編號', width:100, align: 'center'},       { field: 'name', title: '名稱', width: 150, align: 'left' },       { field: 'descrtion', title: '描述', width: 350, align: 'left' },       { field: 'Price', title: '價格', width: 100, align: 'left' }      ],   isoddcolor:false,   pagination:true,   searchnation:true,    pagesize:5  }); });</script></head><body><form id="form1"> <table id="dg"> </table></form></body></html>

本文只是為大家提供了一個框架、思路,如何將這些知識點串連在一起,還需要大家認真的學習研究,動手創建一個屬于自己的jquery表格插件。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
高清亚洲成在人网站天堂| 免费成人高清视频| 久久福利网址导航| 中文字幕亚洲图片| 97av在线视频免费播放| 欧美一区二区三区免费视| 亚洲精品黄网在线观看| 成人性生交大片免费看小说| 精品久久久久久国产91| 国产极品jizzhd欧美| 日韩美女在线看| 国产精品福利在线| 国产精品亚洲美女av网站| 日韩美女写真福利在线观看| 正在播放亚洲1区| 国产成人啪精品视频免费网| 久久久久免费精品国产| 成人性生交大片免费看视频直播| 久久99热精品这里久久精品| 欧美性猛交99久久久久99按摩| 成人高清视频观看www| 亚洲欧洲一区二区三区在线观看| 亚洲第一区中文字幕| 在线观看不卡av| 成人做爽爽免费视频| 狠狠躁夜夜躁人人躁婷婷91| 91sa在线看| 久久久免费高清电视剧观看| 日韩在线免费视频观看| 日韩精品免费在线| 国产成人一区二区在线| 最近2019中文字幕mv免费看| 日韩精品小视频| 日韩中文字幕精品视频| xvideos亚洲| 自拍偷拍免费精品| 国产a∨精品一区二区三区不卡| 国产精品毛片a∨一区二区三区|国| 欧美人与性动交a欧美精品| 欧美日韩国产一区二区三区| 久久精品视频在线播放| 亚洲第一中文字幕| 欧美激情手机在线视频| 亚洲高清福利视频| 久久久久久久国产| 国产精品欧美激情在线播放| 日本高清不卡在线| 国产精品在线看| 欧美国产日韩一区二区| 最近2019中文免费高清视频观看www99| 亚洲国产精彩中文乱码av| 国产精品ⅴa在线观看h| 亚洲精品乱码久久久久久按摩观| 久久av中文字幕| 欧美性xxxxxx| 亚洲三级免费看| 日韩中文字幕在线视频| 欧美日韩一二三四五区| 欧美久久精品午夜青青大伊人| 午夜免费在线观看精品视频| 亚洲国产另类 国产精品国产免费| xvideos亚洲人网站| 欧美在线激情视频| 日韩精品在线观看视频| 国产啪精品视频网站| xvideos成人免费中文版| 91精品免费久久久久久久久| 欧美超级乱淫片喷水| 亚洲电影第1页| 国产精品揄拍一区二区| 操人视频在线观看欧美| 成人国内精品久久久久一区| 亚洲综合最新在线| 日本亚洲精品在线观看| 欧美在线观看视频| 97视频色精品| 日韩激情视频在线| 国产亚洲精品91在线| 国产精品美女免费视频| 亚洲伊人久久综合| 国产亚洲成av人片在线观看桃| 亚洲女人天堂av| 97精品视频在线| 清纯唯美日韩制服另类| 免费99精品国产自在在线| 亚洲精品久久视频| 91香蕉国产在线观看| 国内精品一区二区三区四区| 日本亚洲欧洲色α| 午夜免费日韩视频| 日韩黄色高清视频| 97久久久免费福利网址| 国产精品久久久久久影视| 国产精品久久久久久av| 欧美精品www在线观看| 欧美日韩在线看| 成人在线一区二区| 亚洲精品自产拍| 91精品国产自产在线| 国产欧美一区二区三区四区| 欧美最顶级的aⅴ艳星| 国产精品网站入口| 亚洲美女免费精品视频在线观看| 91美女福利视频高清| 久久国产一区二区三区| 亚洲最大福利视频网站| 日韩在线观看免费av| 日韩精品一二三四区| 欧美一级电影久久| 亚洲一区二区三区四区在线播放| 国产成人综合一区二区三区| 成人国产亚洲精品a区天堂华泰| 中文字幕亚洲自拍| 国产精品女人网站| 亚洲一区二区免费| 亚洲精品999| 色香阁99久久精品久久久| 欧美激情中文字幕在线| 国产精品手机播放| 日韩网站在线观看| 欧美激情在线有限公司| 亚洲人成五月天| 欧美日韩一区二区免费视频| 欧美日韩国产丝袜另类| 91精品在线看| 国产一区二区三区高清在线观看| 国产91精品网站| 91精品久久久久久综合乱菊| 日韩成人小视频| 亚洲国产精品99久久| 欧美激情亚洲视频| 亚洲第一精品夜夜躁人人爽| 国产日韩精品在线观看| 亚洲va久久久噜噜噜久久天堂| 国产精品免费久久久久久| 亚洲人成伊人成综合网久久久| 久久久噜久噜久久综合| 日本韩国欧美精品大片卡二| 国产精品自产拍在线观看| 欧美日韩第一视频| 国产精品扒开腿做爽爽爽视频| 97国产在线观看| 国产精品免费在线免费| 亚洲欧美日韩中文在线制服| 国产成+人+综合+亚洲欧美丁香花| 国产成人精品一区| 国内伊人久久久久久网站视频| 夜夜嗨av色综合久久久综合网| 欧美性极品xxxx娇小| 欧美国产日韩一区二区三区| 91精品久久久久久久| 精品亚洲va在线va天堂资源站| 成人午夜高潮视频| 午夜精品久久久99热福利| 亚洲精品日韩丝袜精品| 国外成人在线直播| 中文欧美日本在线资源| 日本久久久久久久| 久久综合电影一区| 国产在线999| 欧美性猛交xxxx免费看久久久| 日韩电影中文字幕| 亚洲国产中文字幕在线观看| 欧美午夜丰满在线18影院|