/** * tab控件。 * @param divContainerId * @param total * @param conf * @returns {PageTab} */ PageTab = function(divContainerId,total,conf){ { var addCallBack=function(){ alert("addCallBack"); }; var beforeActive=function(prePage){ alert("beforeActive:" +prePage); }; var activeCallBack=function(prePage,currentPage){ alert("activeCallBack:" +prePage +"," + currentPage); }; var beforeDell=function(curPage){ alert("beforeDell:curPage:" + curPage); }; var delCallBack=function(currentPage){ alert("delCallBack:" + currentPage); }; var txtCallBack=function(){ alert("txtCallBack"); }; this.conf= $.extend({},{addCallBack:addCallBack,beforeActive:beforeActive,activeCallBack:activeCallBack,beforeDell:beforeDell,delCallBack:delCallBack,txtCallBack:txtCallBack}, conf); //当前tab。 this.currentTab=null; var imgPlus=__ctx +"/styles/default/css/tab/icon_plus.gif"; var imgDelete=__ctx +"/styles/default/css/tab/icon_minus.gif"; var str='
'; this.totalPage=(total==undefined) ?1:total; //前一页 this.prePage=1; $("#" + divContainerId).append(str); var _self=this; //在tab上双击进行编辑。 $("#pageList").delegate("li>b", "dblclick", function() { var obj=$(this); var hasInput=obj.has("input").length==1; //是否有输入框。 if(hasInput) return; var txtObj=$(""); txtObj.blur(function(){ var tmpObj=$(this); var val=tmpObj.val(); tmpObj.parent().text(val); tmpObj.remove(); var curPage=_self.getCurrentIndex(); _self.conf.txtCallBack(curPage); }); //回车处理 txtObj.keydown(function(event) { if (event.keyCode == '13') { txtObj.parent().text(txtObj.val()); txtObj.remove(); var curPage=_self.getCurrentIndex(); _self.conf.txtCallBack(curPage); } }); obj.empty(); obj.append(txtObj); txtObj.focus(); }); } /** * 控件初始化。 */ this.init=function(aryTitle,aryData){ this.initPages(aryTitle); var _self=this; $("#addPage").click(function(){ _self.addPage(); }); $("#delPage").click(function(){ _self.deletePage(); }); }, /** * 初始化tab选项卡。 */ this.initPages=function(aryTitle){ var pageList = $("#pageList"); pageList.empty(); this.totalPage=aryTitle.length; //添加tab for(var i = 1;i <= this.totalPage;i++){ var title=aryTitle[i-1]; if(title=="") title="页 " + i ; var li=$("
  • "+title+"
  • "); //设置点击事件。 this.attachTabEvent(li); pageList.append(li); } this.currentTab=pageList.children().first(); this.setActivePage(); }, /** * 设置点击选项卡点击事件。 */ this.attachTabEvent =function (obj){ var self=this; obj.click(function(){ var tabObj=$(this); var prePage=self.getCurrentIndex(); var result=self.conf.beforeActive(prePage); if(!result)return; self.currentTab=tabObj; //前一页的号码 var curPage=self.getCurrentIndex(); self.setActivePage(); self.conf.activeCallBack(prePage,curPage); }); }, /** * 添加tab */ this.addPage =function(){ this.totalPage ++; var li=$("
  • 新页面
  • "); this.attachTabEvent(li); this.currentTab.after(li); this.currentTab=li; this.setActivePage(); //添加回调函数 this.conf.addCallBack(); }, /** * 设置激活页 */ this.setActivePage=function (){ var curTab =this.currentTab; if(curTab.siblings()){ curTab.siblings().removeClass("current"); } curTab.addClass("current"); }, /** * 取得当前tab的索引。 * @returns */ this.getCurrentIndex=function(){ return $("#pageList").children().index(this.currentTab) +1; }, /** * 删除tab选项。 */ this.deletePage=function(){ if (this.totalPage==1) return; var curPage=this.getCurrentIndex(); var next=this.currentTab.next(); var prev=this.currentTab.prev(); var result=this.conf.beforeDell(curPage); if(!result)return; this.currentTab.remove(); if(next.length>0){ this.currentTab=next; } else{ this.currentTab=prev; } this.totalPage--; this.setActivePage(); //回调删除事件处理 this.conf.delCallBack(curPage); }; };