基于jQuery实现Tabs选项卡自定义插件
控件这东西网上找的多少都有些功能不如意的,只能自己动手来写了。
Tabs插件很多人都需要用到,网上也有很多的例子,但是不是风格不搭调就是用着不习惯(自己写的不一定比别人的好但用着顺手Inlove)
下面直接贴代码,不喜勿喷:
(function($){ 'usestrict'; vardefaults={ type:"iframe", onchanged:null, style:{ header_panel:"tab-headers", content_panel:"tab-contents", header:"tab-header", content:"tab-content", selected:"selected", icon_base:"fa", icon_close:"fa-close" } } varmethods={ init:function(options){ returnthis.each(function(){ var$this=$(this); if(!$this.hasClass("tw.tabs")){ $this.addClass("tabs"); } varsettings=$this.data('tw.tabs'); if(typeof(settings)=='undefined'){ settings=$.extend({},defaults,options); $this.data('tw.tabs',settings); }else{ settings=$.extend({},settings,options); $this.data('tw.tabs',settings); } $this.empty(); $this.append($("<ulclass='"+settings.style.header_panel+"'></ul>")); $this.append($("<divclass='"+settings.style.content_panel+"'></div>")); if(settings.data){ if(typeofsettings.data==='string'){ settings.data=$.parseJSON(settings.data); } $.each(settings.data,function(){ $this.tabs("add",this); }); } }); }, add:function(tab){ var$this=$(this); varsettings=$this.data("tw.tabs"); varheaders=$this.find("."+settings.style.header_panel); varcontents=$this.find("."+settings.style.content_panel); if(headers.find("[data-tab='"+tab.id+"']").length==0){ varheader=$("<liclass='"+settings.style.header+"'data-tab='"+tab.id+"'>"+ "<iclass='"+settings.style.icon_base+""+tab.icon+"'></i>"+ "<spanclass='tab-title'>"+tab.name+"</span></li>"); if(tab.canClose){ varclose=$("<iclass='"+settings.style.icon_base+""+settings.style.icon_close+"'></i>"); close.click(function(){ $this.tabs("remove",tab.id); }); header.append(close); } header.data("tw.tab",tab); header.click(function(){ $this.tabs("select",tab); }); headers.append(header); varcontent=$("<divclass='"+settings.style.content+"'data-tab='"+tab.id+"'></div>"); if(settings.type=="iframe"){ content.append("<iframesrc='"+tab.url+"?target_id="+tab.id+"'></iframe>"); }elseif(settings.type=="ajax"){ $.ajax({ url:tab.url, type:"post", async:false, data:{target_id:tab.id}, success:function(result){ content.html(result); } }); }else{ content.html(tab.content); } contents.append(content); if(tab.selected){ $this.tabs("select",tab); } }else{ $this.tabs("select",tab); } }, select:function(tab){ var$this=$(this); varsettings=$this.data("tw.tabs"); $this.find("."+settings.style.selected).removeClass(settings.style.selected); if(typeoftab=="object"){ $this.find("[data-tab='"+tab.id+"']").addClass(settings.style.selected); }else{ $this.find("."+settings.style.header).eq(tab).addClass(settings.style.selected); $this.find("."+settings.style.content).eq(tab).addClass(settings.style.selected); } if(settings.onchanged){ settings.onchanged(tab); } }, refresh:function(){ var$this=$(this); varselected=$this.find("."+settings.style.selected); vartab=$this.find("."+settings.style.header).data("tw.tab"); if(settings.type=="iframe"){ selected.find("iframe").attr('src',tab.url+"?target_id="+tab.id); }elseif(settings.type=="ajax"){ $.ajax({ url:tab.url, type:"post", async:false, data:{target_id:tab.id}, success:function(result){ content.html(result); } }); }else{ content.html(tab.content); } }, remove:function(id){ var$this=$(this); varsettings=$this.data("tw.tabs"); vartab=$this.find("[data-tab='"+id+"']"); if(tab.find("."+settings.style.selected)){ varindex=tab.eq(0).index()-1; $this.tabs("select",index); } tab.remove(); }, destroy:function(options){ return$(this).each(function(){ var$this=$(this); $this.removeData('tabs'); }); } } $.fn.tabs=function(){ varmethod=arguments[0]; varargs=arguments; if(typeof(method)=='object'||!method){ method=methods.init; }elseif(methods[method]){ method=methods[method]; args=$.makeArray(arguments).slice(1); }else{ $.error('Method'+method+'doesnotexistontw.tabs'); returnthis; } returnmethod.apply(this,args); } } )(jQuery);
.tabs{ width:100%; height:100%; } .tabs.tab-headers{ margin:0; padding:010px; height:40px; list-style:none; background:#f5f5f5; border-bottom:1pxsolid#ccc; } .tabs.tab-headers.tab-header{ float:left; height:30px; font-size:12px; padding:7px15px0; margin-top:10px; margin-right:5px; border:1pxsolid#ccc; border-bottom:none; position:relative; cursor:pointer; } .tabs.tab-headers.tab-header:hover{ background:#ccc; color:#0094ff; } .tabs.tab-headers.tab-header.selected{ background:#fff; border:none; cursor:default; padding-top:5px; margin-left:1px; margin-right:6px; border-top:3pxsolid#0094ff; } .tabs.tab-headers.tab-header.tab-title{ margin-left:5px; } .tabs.tab-headers.tab-header.fa-close{ position:relative; right:-6px; top:0; } .tabs.tab-headers.tab-header.tab-close:hover{ color:#f00; cursor:pointer; } .tabs.tab-contents{ width:100%; height:calc(100%-40px); } .tabs.tab-contents.tab-content{ display:none; } .tabs.tab-contents.tab-content.selected{ display:block; width:100%; height:100%; overflow:hidden; } .tabs.tab-contents.tab-content.selectediframe{ width:100%; height:100%; border:none; }
本文已被整理到了jquery选项卡操作方法汇总、大家还可以点击javascript选项卡操作方法汇总进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。