jquery-miniTable简单实用表格插件

支持:

1、表头自定义

2、动态删除 添加 获取行数据

3、设置自定义样式

4、支持事件回调

 代码如下 复制代码

  var phone_column = ["编号", "手机号码", "IMSI", "添加时间", "操作"], 
    var phone_option = { tColumns: phone_column }
                var row = [];
            row.push(data.Id);
            row.push(msisdn);
            row.push(imsi);
            row.push(Date.parse(data.CreateTime).toString("yyyy-MM-dd"));
            row.push(data_link);
            _data.SuspectMsisdnList.push(row);
            $("#property_phone").miniTable('addNewRow',row);

插件代码:

 

 代码如下 复制代码
(function ($) {
var instances = [];
var methods = {
init: function (opts) {
    var $self = $(this);
    _clear($self);
    var defaults = $self.miniTable.settings;
    var settings = $.extend({}, defaults, opts);
    _init($self, settings);
    instances.push(settings);
    return $self.miniTable;
},
getRow: function (row_num) {
    var $self = $(this);
    var num = Number(row_num);
    return _getRow($self, num);
},
getTdData: function (row_num, col_num) {
},
deleteRow: function (row_num) {
    var $self = $(this);
    var num = Number(row_num);
    _deleteRow($self, num);
},
addNewRow: function (row) {
    var $self = $(this);
    _addNewRow($self, row);
}
};
function _init(self, settings) {
_buildTable(self, settings);
_applyStyle(self, settings);
_renderTable(self, settings);
_save(self, settings);
}
function _clear(self) {
var settings = self.miniTable.settings;
for (var attr in settings) {
    settings[attr] = [];
}
}
function _save(self, settings) {
var oldS = self.data('miniTable');
if (typeof (oldS) == 'undefined') {
    self.data('miniTable', settings);
    return;
}
var newS = $.extend({}, oldS, settings);
self.data('miniTable', newS);
var s = self.data('miniTable');
console.log(s);
}
function _addNewRow(self, row) {
var settings = self.data('miniTable');
if (typeof (settings) != 'undefined') {
    var lastId = settings.oRows.slice(-1);
    _buildRow(self, row, lastId[0].Id + 1, settings);
    _applyColumnDef(settings);
    var lastRow = settings.oRows.slice(-1);
    _applyRowStyle(lastRow[0]);
    settings.oTbody.appendChild(lastRow[0].tElement[0]);
    _save(self, settings);
    return lastRow[0].tTds;
}
}
function _deleteRow(self, row_num) {
var settings = self.data('miniTable');
//根据ID查找表格行数
for (var i = 0; i < settings.oRows.length; i++) {
    if (settings.oRows[i].Id == row_num) {
        settings.oRows[i].tElement.remove();
        settings.oRows.splice(i, 1);
        break;
    }
};
_save(self, settings);
}
function _getRow(self, row_num) {
var settings = self.data('miniTable');
for (var i = 0; i < settings.oRows.length; i++) {
    if (settings.oRows[i].Id == row_num) {
        return settings.oRows[i];
    }
};
}
function _applyStyle(self, settings) {
self.attr('class', 'miniTable');
for (var i = 0; i < settings.oColumns.length; i++) {
    if (!settings.oColumns[i].visible) {
        settings.oColumns[i].tElement.css('display', 'none');
    }
};
for (var i = 0; i < settings.oRows.length; i++) {
    for (var j = 0; j < settings.oRows[i].tTds.length; j++) {
        if (!settings.oRows[i].tTds[j].visible) {
            settings.oRows[i].tTds[j].tElement.css('display', 'none');
        }
    };
};
}
function _applyRowStyle(row) {
for (var i = 0; i < row.tTds.length; i++) {
    if (!row.tTds[i].visible) {
        row.tTds[i].tElement.css('display', 'none');
    }
};
}
function _renderTable(self, settings) {
var thead = settings.oThead,
tbody = settings.oTbody;
for (var i = 0; i < settings.oColumns.length; i++) {
    thead.appendChild(settings.oColumns[i].tElement[0]);
};
for (var i = 0; i < settings.oRows.length; i++) {
    tbody.appendChild(settings.oRows[i].tElement[0]);
};
self.append(thead);
self.append(tbody);
}
function _buildTable(self, settings) {
_buildHead(self, settings);
_buildData(self, settings);
_applyColumnDef(settings);
}
function _buildColumn(self, column, loopId, settings) {
var iCol = {
    tTitle: column.tTitle ? column.tTitle : column || "标题_" + loopId,
    tElement: $("<th>"),
    tColId: self.attr("id") + "_th_" + loopId,
    visible: true
}
iCol.tElement.attr('class', iCol.tClass);
iCol.tElement.attr('id', iCol.tColId);
iCol.tElement.text(iCol.tTitle);
settings.oColumns.push(iCol);
}
function _buildRow(self, row, loopId, settings) {
var iRow = {
    Id: loopId,
    tRowId: self.attr("id") + "_tr_" + loopId,
    tElement: $("<tr>"),
    tClass: row.tClass || loopId % 2 == 0 ? 'even' : 'odd',
    tTds: []
};
iRow.tElement.attr('id', iRow.tRowId);
iRow.tElement.attr('class', iRow.tClass);
for (var i = 0; i < row.length; i++) {
    var iTd = {
        tTdId: iRow.tRowId + "_td_" + i,
        tElement: $("<td>"),
        tText: row[i],
        visible: true
    };
    iTd.tElement.attr('id', iTd.tTdId);
    iTd.tElement.html(iTd.tText);
    iRow.tTds.push(iTd);
    iRow.tElement.append(iTd.tElement);
};
settings.oRows.push(iRow);
}
function _buildHead(self, settings) {
settings.oThead = document.createElement("thead");
for (var i = 0; i <= settings.tColumns.length - 1; i++) {
    _buildColumn(self, settings.tColumns[i], i, settings);
};
}
function _buildData(self, settings) {
settings.oTbody = document.createElement("tbody");
for (var i = 0; i <= settings.tData.length - 1; i++) {
    _buildRow(self, settings.tData[i], i, settings);
}
}
function _applyColumnDef(settings) {
for (var i = settings.tColumnDefs.length - 1; i >= 0; i--) {
    var tar = settings.tColumnDefs[i].target;
    var visible = settings.tColumnDefs[i].visible;
    if (!$.isArray(tar)) {
        $.error('_applyColumnDef' + tar + ' tColumnDefs must be Array');
        continue;
    }
    for (var j = tar.length - 1; j >= 0; j--) {
        settings.oColumns[tar[j]].visible = visible;
        for (var k = settings.oRows.length - 1; k >= 0; k--) {
            settings.oRows[k].tTds[tar[j]].visible = visible;
        };
        //可以增加其他设置 例如 callback
    };
}
}
var miniTable = function (opts) {
var method = arguments[0];
if (methods[method]) {
    method = methods[method];
    arguments = Array.prototype.slice.call(arguments, 1);
} else if (typeof (method) == 'object' || !method) {
    method = methods.init;
} else {
    $.error('Method ' + method + ' does not exist on jQuery.miniTable');
    return this;
}
return method.apply(this, arguments);
}
$.fn.miniTable = miniTable;
$.fn.miniTable.settings = {
tData: [],
tColumns: [],
oColumns: [],
oRows: [],
oThead: [],
oTbody: [],
tColumnDefs: [],
fnRowCallback: null
};
})(jQuery);

原文来自:http://www.suchso.com/UIweb/jquery-miniTable.html

时间: 2024-08-29 17:12:49

jquery-miniTable简单实用表格插件的相关文章

jQuery EasyTabs.js简单实用Tabs插件

今天分享一个jQuery 简单实用Tabs插件-EasyTabs.js. 官方地址: http://os.alfajango.com/easytabs/#tabs1-html EasyTabs.js 是一个轻松实现 Tabs 组件的 jQuery 插件,支持多种不同外观. 可以采用自带的样式也可以自定义样式. jQuery 1.4.3+ 支持一下浏览器: Internet Explorer 7+ Firefox 4+ Chrome Safari Opera 11   示例代码:  代码如下 复制

jquery实现简单实用的弹出层效果代码_jquery

本文实例讲述了jquery实现简单实用的弹出层效果.分享给大家供大家参考.具体如下: 目前来说,我还是喜欢这个自己改造的弹出层,在项目中用的也是这个.引入了新版的jquery插件,方框及文字都可以自己定义,非常方便,希望大家也喜欢这款弹出层,JavaScript在本例中也充分发挥了作用,对学习JS也是不错的参考. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-simple-alert-style-demo/ 具体代码如下: <!D

10个简单实用的 jQuery 代码片段

尽管各种 JavaScirpt 框架和库层出不穷,jQuery 仍然是 Web 前端开发中最常用的工具库. 今天,向大家分享我觉得在网站开发中10个简单实用的 jQuery 代码片段. 1.平滑滚动到锚点 // HTML: // <h1 id="anchor">Lorem Ipsum</h1> // <p><a href="#anchor" class="topLink">Back to Top&l

jQuery 表格插件整理_jquery

jQuery 表格插件 Flexigrid – Web 2.0 Javscript Grid for jQuery - 可变列宽,自动适应表头宽度,可通过 Ajax 连接 XML 数据源,类似 Ext Grid,但基于 jQuery 因此更轻量小巧. Chromatable JQuery Plugin - 固定表头,可滚动内容区,内容区滚动的时候表头位置保持不变. Ingrid, the jQuery Datagrid - 在 HTML 表格上加入列宽调整,分页,排序,行列式样等功能(演示).

jQuery表格插件datatables用法详解_jquery

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

自己动手写的jquery分页控件(非常简单实用)_jquery

最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了.写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性不知道怎么没时间测试呢.欢迎有同样需求的小伙伴采用,在使用过程发现有问题欢迎提出批评建议.   css: @charset "utf-"; * { margin:px; padding:px; font-family:"微软雅黑";

Jquery 表格插件

问题描述 哪位大神能提供一款表格插件,能带下载功能的插件,我查了资料jquery挺多表格插件,但好像都不带下载功能 解决方案 解决方案二:你自己写上千行js代码还写不好的那些,才应该使用插件.你自己写3.4行代码的那些js,为什么还要求天上掉下下载插件啊?解决方案三:下载是服务端功能,jQuery运行于客户端,所以不会有下载功能,但可以有导出功能解决方案四:下载的话你可以找报表工具,简单的下载你可以直接将html以excel的方式导出解决方案五:下载是要你自己写的,跟jquery表格插件没有关系

教你一款极为简单实用的图表插件

这里介绍一款简单实用的图表插件,该图表插件是基于jquery和jquery的插件 gchart很容易实现的,而gchart插件是封装了google的图表api . 一  柱状图  (1) 竖状单行条形直方图效果图:   以上数据取自某个网站六个月份的用户注册量 .从以上数据可以看出,一二月份注册用户数为0,图表能够清晰对比每个月份用户注册量的变化. //月度报表        function MonthReport() {            $.ajax({                

jQuery表格插件:帮助Web设计者驾御HTML表格

本文搜集了大量 jQuery 表格插件,帮助 Web 设计者更好地驾御 HTML 表格,你可以对表格进行横向和竖向排序,设置固定表头,对表格进行搜索,对大表格进行分页,对表格进行滚动,拖放操作等等.这些插件很多都包含详细的教程. jQuery 表格插件 Flexigrid – Web 2.0 Javscript Grid for jQuery - 可变列宽,自动适应表头宽度,可通过 Ajax 连接 XML 数据源,类似 Ext Grid,但基于 jQuery 因此更轻量小巧. Chromatab