热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

columns样式jquery_创建自己的jquery表格插件

在模仿easyui的dataGrid表格插件的同时,自己去封装了一个。实现了基本的json数据的动态加载,自动分页,全选全不选࿰

在模仿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("

");

},

//循环添加表头

createTableHead: function () {

var headcols = this.settings.columns;

for (var i = 0; i

if (headcols[i].field == 'ck') $("table[id='" + this._id + "'] thead tr").append("

");

else $("table[id='" + this._id + "'] thead tr").append("

" + headcols[i].title + "");

}

},

//循环添加行

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

if (row == json.rows.length) break;

rowsdata += "

";

for (var colindex = 0; colindex

if (columns[colindex].field == 'ck') rowsdata += '

'

else rowsdata += '

' + json.rows[row][columns[colindex].field] + '';

}

rowsdata += "

";

}

$("table[id='" + this._id + "'] tbody").empty().append(rowsdata);

$("#currentpageIndex").html(pn);

this.registermousehover();

},

//初始化分页

createTableFoot: function () {

var footHtml = "

";

footHtml += "1/" + _op.settings.totalpage + "页";

footHtml += "首页";

footHtml += "上一页";

footHtml += "下一页";

footHtml += "末页";

footHtml += "跳转";

footHtml += "

";

$("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) <&#61; _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 &#61; data;

}

});

return result;

}

}

$.fn.grid &#61; function (options) {

var grid &#61; new dataGrid(this, options);

return this.each(function () {

grid.init();

});

}

})

html调用

无标题文档

$(function(){

$("#dg").grid({

id:"dg",

url:"data.json",

columns: [

{field:&#39;ck&#39;,checkbox:true},

{ field: &#39;ID&#39;, title: &#39;编号&#39;, width:100, align: &#39;center&#39;},

{ field: &#39;name&#39;, title: &#39;名称&#39;, width: 150, align: &#39;left&#39; },

{ field: &#39;descrtion&#39;, title: &#39;描述&#39;, width: 350, align: &#39;left&#39; },

{ field: &#39;Price&#39;, title: &#39;价格&#39;, width: 100, align: &#39;left&#39; }

],

isoddcolor:false,

pagination:true,

searchnation:true,

pagesize:5

});

});

本文只是为大家提供了一个框架、思路&#xff0c;如何将这些知识点串连在一起&#xff0c;还需要大家认真的学习研究&#xff0c;动手创建一个属于自己的jquery表格插件。



推荐阅读
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Leetcode学习成长记:天池leetcode基础训练营Task01数组
    前言这是本人第一次参加由Datawhale举办的组队学习活动,这个活动每月一次,之前也一直关注,但未亲身参与过,这次看到活动 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
author-avatar
拍友2502914573
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有