前提:弄了一年的Flex,对JS基本不懂,更别谈jQuery了,今天早上去公司没事,看了下jQuery的介绍,准备写一个可编辑的表格控件,而且可以结合其他分页控件,新手上路,无喷啊~
$(document).ready(function() { var dg = $("#dg").dataTable({ "aoKey": ["SN", "CNTX"] }); var dp = [{ "SN": 1, "CNTX": "IE" }, { "SN": 2, "CNTX": "FF" }]; dg.fnSetSrc(dp); }); (function($) { var dataTable = function(oInit) { var oDefs = {}; var oInit = $.extend(oDefs, $.fn.dataTable, oInit); // 初始化需要显示的键值 var oSets = { aoKey: oInit["aoKey"], aoSrc: oInit["aoSrc"] || [], oThis: this, oApis: oInit.oApis, oSelt: { iSelIdx: -1, oSelObj: {} } }; // 校验是否存在tbody标记 if ($(this).find("tbody").length == 0) { var tbody = $("<tbody></tbody>"); tbody.appendTo($(this)); } // 添加外部函数 $.each(oSets.oApis, function(oApi, func) { oSets.oThis[oApi] = func; oSets.oThis[oApi].apply(func, [oSets]); }); //-------------------------------------------------- //-- 内部处理函数 ---------------------------------- //-------------------------------------------------- function _fnSelect() { with(oSets.oSelt) { iSelIdx = $(this).index(); oSelObj = oSets.aoSrc[iSelIdx]; } } //-------------------------------------------------- //-- 外部接口函数 ---------------------------------- //-------------------------------------------------- this.fnSelect = function() { return oSets.oSelt; } /** * 设置数据源 * @param aoSrc 数据源 * */ this.fnSetSrc = function(aoSrc) { oSets.aoSrc = aoSrc || []; this.fnUpdate(); } /** * 生成表格 * @param oOpts * */ this.fnUpdate = function(oOpts) { var tbody = $(this).find("tbody"); tbody.empty(); $.each(oSets.aoSrc, function(i, src) { var tr = $("<tr></tr>"); tr.bind("click", _fnSelect); // 添加事件绑定 $.each(oSets.aoKey, function(j, cntx) { var td = $("<td>" + src[cntx] + "</td>"); td.appendTo(tr); }); tr.appendTo(tbody); }); } return this; }; dataTable.oApis = $.extend({}, dataTable.oApis); $.fn.dataTable = dataTable; })(jQuery);
谷歌了到了jQuery.dataTable,这个控件,确实强大,但是感觉不怎么合适使用,至少是我。
设置数据源后,调用fnUpdate方法即可,增、删、改数据直接修改数组源并更新就可,后续增加单行操作的函数~
参考jQuery.dataTable,可以自定义插件~
这样,就可以配合其他分页插件使用了~
今天,就到这里~