<div class="sub_menus module-manager"> <div class="module-list"> <table class="list" id="tab_mod"> <tr class="t_title"> <th class="col-1">序号</th> <th class="col-2">模块名</th> <th class="col-3">价格</th> <th class="col-4">购买时间</th> </tr> </table> </div> <div id="pager1" class="pager"></div> </div>
jquery.page.js分页类 js对象解决同一个方法在页面引入多次报错问题(调用:对象.方法)
/** * table分页类 * author phoenix * date 2013-12-17 * 示例: var page = new Page({ url:'busimodules.php', //获取分页的数据 issort: true, //是否显示排序序号 pageSize:4, //每页显示的条数 name:'page', //该值必须和实例化对象一样,如果创建多个实例的话实例名称不能相同 fileds:['mname', 'price', 'buytime'], //要显示的字段,必须和url参数:busimodules.php的返回值一致 tabcontainer: 'tab_mod',//表格id navcontainer: 'pager1' //翻页导航显示的id }); var page3 = new Page({ url:'busimodules.php', name:'page3', pageNavFun:'getPageBar2', pageSize:12, callback:function (jsondata, navstr) {} }); * busimodules.php返回json数据格式: {"total":6,"pageSize":3,"curPage":1,"totalPage":2,"data":[{"mname":"\u8d2d\u7269\u8f66","price":"10.00","buytime":"2013-12-16 13:40:23"},{"mname":"\u6536\u85cf","price":"10.00","buytime":"2013-12-16 13:40:16"},{"mname":"\u8ba2\u5355","price":"10.00","buytime":"2013-12-16 13:40:10"}]} 如果要将返回结果自己处理,可以在参数name的后面加上参数callback:function (jsondata, navstr) {处理逻辑} 后面的tabcontainer等参数就都没有用了 * */ var Page = function (options) { var defaults = { navNum:10, navOffset:1, pageSize:3, data:{}, pageNavFun:'getPageBar', issort:false }; this.options = $.extend({}, defaults, options); if(!this.options.url) {return false;} if(!this.options.name) {return false;} if(!this.options.callback) { if(!this.options.tabcontainer) {return false;} if(!this.options.navcontainer) {return false;} if(!this.options.fileds || this.options.fileds.length < 1) {return false;} } this.init(); } Page.prototype.init = function () { this.getPageData(1); } /** * 获取对应页数据 * p表示当前页数 * 返回当前页的数据,和导航数据 */ Page.prototype.getPageData = function (p) { $this = this; if (!p) p = 1; ajaxSendData = 'pagesize=' + $this.options.pageSize + '&p=' + p; $.each($this.options.data, function (name, val) { ajaxSendData += "&" + name + "=" + val; }); $.ajax({ type:'POST', url:$this.options.url + "?t=" + Math.random(), data:ajaxSendData, async:false, dataType:'JSON', success:function (obj) { var navstr = eval($this.options.pageNavFun + "(obj, $this.options)"); var data = obj.data; if ($this.options.callback) { $this.options.callback(data, navstr); } else { var html = ''; var shtml = ''; for (var i = 0; i < data.length; i++) { if ($this.options.issort) { shtml = '<td class="col-1">' + ($this.options.pageSize * (p - 1)-0 + (i + 1)) + '</td>'; } html += '<tr>' + shtml; var k = 1; if (shtml != '') { k = 2; } for (var j = 0; j < $this.options.fileds.length; j++) { html += '<td class="col-' + k + '">' + data[i][$this.options.fileds[j]]; k++; } html += '</tr>'; } if (!$('#' + $this.options.tabcontainer).find('tr:eq(1)')[0]) { $('#' + $this.options.tabcontainer).append(html); } else { $('#' + $this.options.tabcontainer).find('tr:gt(0)').remove(); $('#' + $this.options.tabcontainer).append(html); } $('#' + $this.options.navcontainer).html(navstr); } } }); } function getPageBar(obj, opt) { if (!obj) return false; curPage = parseInt(obj.curPage, 10); if (curPage > obj.totalPage) { curPage = obj.totalPage; } if (curPage < 1) { curPage = 1; } if (curPage <= parseInt(opt.navNum / 2, 10)) { opt.navOffset = 1; } else { opt.navOffset = curPage - parseInt(opt.navNum / 2, 10); } var prev = next = 0; var startnav = endnav = ''; if (curPage == 1) { startnav = '<li class="paging_btn previous">首页</li> <li class="paging_btn previous">上页</li>'; } else { prev = curPage - 1; startnav = '<li class="paging_btn previous" onclick="javascript:' + opt.name + '.getPageData(1);">首页</li> <li class="paging_btn previous" onclick="javascript:' + opt.name + '.getPageData(' + prev + ');">上页</li>'; } if (curPage == obj.totalPage || obj.totalPage == 0) { endnav = '<li class="paging_btn next">下页</li> <li class="paging_btn next">末页</li>'; } else { next = curPage + 1; endnav = '<li class="paging_btn next" onclick="javascript:' + opt.name + '.getPageData(' + next + ');">下页</li> <li class="paging_btn next" onclick="javascript:' + opt.name + '.getPageData(' + obj.totalPage + ');">末页</li>'; } var amongNav = ''; for (var i = opt.navOffset; i < opt.navOffset + opt.navNum; i++) { if (i == curPage) { amongNav += '<li class="paging_btn num checked">' + i + '</li>'; } else { amongNav += '<li class="paging_btn num" onclick="javascript:' + opt.name + '.getPageData(' + i + ');">' + i + '</li>'; } if (i >= obj.totalPage) break; } var jump = '<input type="text" name="page" class="jump_page" id="jump_page" maxlength="4" />'; jump += '<input type="button" class="jump_btn" id="jump_btn" value="go" />'; return startnav + amongNav + endnav + jump; }
JS面向对象编程之对象访问控制实例
function Cat(name, age){ var name = name; this.age = age||1; this.setName = function(sName){ this.name = sName; } this.getName = function(){ return this.name; } this.setAge = function(nAge){ this.age = nAge; } this.getAge = function(){ return this.age; } } Cat.prototype.say = function(){ console.log('I am '+this.name+', I am '+this.age); } var kk = new Cat('kk'); console.log(kk.name);//undefined @private kk.setName('deeka'); console.log(kk.getName()); // deeka kk.setAge(2); console.log(kk.getAge()); // 2 kk.age = 3; console.log(kk.age);//3 @public kk.say(); // I am deeka, I am 3