创建自己的jquery表格插件_jquery
在模仿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表格插件。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

1、新建一个PPT文件,命名为【PPT技巧】,作为示例。2、双击【PPT技巧】,打开PPT文件。3、插入两行两列的表格,作为示例。4、在表格的边框上双击,上方工具栏出现【设计】的选项。5、点击【底纹】的选项,点击【图片】。6、点击【图片】,弹出以图片为背景的填充选项对话框。7、在目录中找到要插入的托,点击确定即可插入图片。8、在表格框上右击,弹出设置的对话框。9、点击【设置单元格格式】,勾选【将图片平铺为底纹】。10、设置【居中】【镜像】等自己需要的功能,点击确定即可。注意:默认为图片填充在表格

能够熟练的制作表格不仅是会计、人事以及财务的必备技能,对于很多销售人员来说,学会制作表格也是很重要的。因为与销量有关的数据都是很多并且很复杂的,而且不是简单的记在文档当中,就可以说明问题的。为了能够让更多的销售人员熟练运用Excel来制作表格,小编接下来要介绍的就是有关于销量预测的表格制作问题,有需要的朋友不要错过哦!1,打开【销量预测及目标制定】,xlsm,来分析每个表格所存放的数据。2,新建【空白工作表】,选择【单元格】,输入【标签信息】。向下【拖拽】,【填充】月份。输入【其它】数据,点击【

1、打开工作表,找到【开始】-【条件格式】按钮。2、点击列选择,选中将添加条件格式的列。3、单击【条件格式】按钮,弹出选项菜单国。4、选择【突出显示条件规则】-【介于】。5、填写规则:20,24,深填充色深绿色文本。6、确定后,所选列中数据按照设定对相应数字文字、单元框加色处理。7、对于没有冲突的条件规则,可以重复添加,但对于冲突规则wps则会以最后添加的规则代替之前建立的条件规则。8、重复添加【介于】规则20-24和【小于】20后的单元列。9、如需改变规则,刚可以清除规则后重新设定规则。

有时候,我们在Word表格中会经常遇到计数的问题;一般遇到这样的问题,大部分同学都回把Word表格复制到Excel中来计算;还有一部分同学会默默地拿起计算器去算。那有没有快速的方法来计算呢?当然有啊,其实在Word中也是可以计算求和的。那么,你知道该怎么操作吗?今天,我们就来一起来看一下吧!废话不多说,有需要的小伙伴赶紧收藏起来吧!步骤详情:1、首先,我们打开电脑上的Word软件,打开需要处理的文档。(如图所示)2、接着,我们将光标定位在求和数值所在的单元格上(如图所示);然后,我们点击【菜单栏

Word软件是我们必不可少并需要经常使用的,前面学习了Word软件编辑表格,但是,如果不小心,将表格的横竖方向编辑反了,又不想浪费时间重新制作,是否可以将表格的横竖调换呢?答案当然是肯定,接下来,就由小编为大家详细的介绍word怎么把表格横竖调换的操作方法,,让我们一起来学习吧。首先,我们需要将下面的Word表格进行行列互换。要做到这一点,我们需要先全部选中表格,然后右键点击并选择复制功能。第2步,选择复制以后我们把word最小化,然后打开一个Excel表格,点击右键,选择粘贴,把它粘贴到Exc

我们在制作表格时,第一想到的是会用Excel软件制作表格,但是你知道吗,其实Word软件制作表格也是非常方便的,有时我们在Word软件里进行表格制作的时候,需要输入序号或编号,如果是手动一个一个地输,那就非常地麻烦了,其实word软件里有一个操作能自动插入编号或序号,那么下面就和小编一起来学习Word表格自动编号或序号怎么插入的方法吧。1.首先建立一个Word文档,插入表格。 2.选中需要插入自动序号或编号的列或单元格。 3.点击“开始”—“编号”。 4.选择其中的一种样式的编号。 5.

我们经常在excel中制作和编辑表格,但是作为一个刚刚接触软件的新手来讲,如何使用excel制作表格,并没有我们使用起来那么轻松。下边,我们针对新手,也就是初学者需要掌握的表格制作的一些步骤进行一些演练,希望对需要的人有些帮助。新手表格示例样板如下图:我们看看如何来完成!1,新建excel文档,有两种方法。可以在【桌面】空白位置,点击鼠标右键-【新建】-【xls】文件。也可以【开始】-【所有程序】-【MicrosoftOffice】-【MicrosoftExcel20**】2,双击我们新建的ex

jQuery中如何使用PUT请求方式?在jQuery中,发送PUT请求的方法与发送其他类型的请求类似,但需要注意一些细节和参数设置。PUT请求通常用于更新资源,例如更新数据库中的数据或更新服务器上的文件。以下是在jQuery中使用PUT请求方式的具体代码示例。首先,确保引入了jQuery库文件,然后可以通过以下方式发送PUT请求:$.ajax({u
