JavaScript浏览器选项卡效果

 更新时间:2010年08月25日 21:50:06   作者:  
项目需要做了如下的东西,希望能给其他需要的同学们一点参考。
有图如下:

代码如下:
复制代码 代码如下:

/*
head html : <span></span>
body html : <iframe></iframe>
*/
var Tab = function(id,title,url,isClose){
this.id = id;
this.title = title;
this.url = url;
this.head = jQuery('<span class="tab-head">' + this.title +'</span>');
this.body = jQuery('<iframe name="ifm' + this.id +'" src="' + this.url +'" frameborder=0 class="tab-body"></iframe>').hide();
isClose && (this.close = jQuery('<span class="tab-head-closeBtn">&times;</span>'),this.closeBtn());
};
Tab.prototype = {
closeBtn : function(){
var self = this;
self.close.bind("mouseover",function(){
jQuery(this).addClass("tab-closeBtn-hover");
});
self.close.bind("mouseout",function(){
jQuery(this).removeClass("tab-closeBtn-hover");
});
self.head.append(self.close);
},
getFocus : function(){
this.head.addClass("tab-head-active");
this.body.show();
},
loseFocus : function(){
this.head.removeClass("tab-head-active");
this.body.hide();
},
destory : function(){
this.head.remove();
this.body.remove();
},
};
/*
head html : <div><span></span><span></span>...</div>
body html : <div><iframe></iframe><iframe></iframe>...</div>
*/
var TabView = function(container){
this.container = container;
this.head = jQuery('<div class="tabView-head"></div>');
this.body = jQuery('<div class="tabView-body"></div>');
this.tabs = [];
this.tabId = 0;
this.focusTab = null;
this.init();
};
TabView.prototype = {
init : function(){
this.container.append(this.head).append(this.body);
},
add : function(title,url,isClose){
var self = this;
var tab = new Tab(self.tabId,title,url,isClose);
self._tabEvents(tab);
(self.tabs.length==0) && (tab.getFocus(),self.focusTab=tab);
self.tabs.push(tab);
self.head.append(tab.head);
self.body.append(tab.body);
self.tabId++;
},
remove_ref : function(tab){
var self = this;
for(var i=0;i<self.tabs.length;i++){
if(tab.id===self.tabs[i].id){
tab.destory();
self.tabs.splice(i,1);
return i;
}
}
return -1;
},
destory : function(){
this.head.remove();
this.body.remove();
},
_tabEvents : function(tab){
var self = this;
tab.head.bind("click",function(){
if(self.focusTab.id != tab.id){
tab.getFocus();
self.focusTab.loseFocus();
self.focusTab = tab;
}
});
tab.close && tab.close.bind("click",function(){
tab.destory();
var i = self.remove_ref(tab);
if(tab.id==self.focusTab.id){//如果关闭的是当前的tab
if(self.tabs.length==0){//如果所有tab都已关闭
self.destory();
}else{
var nextIndex = self.tabs.length==i ? i-1 : i;
self.focusTab = self.tabs[nextIndex];
self.focusTab.getFocus();
}
}
});
},
};

相关文章

  • JavaScript验证电子邮箱的函数

    JavaScript验证电子邮箱的函数

    本文主要是javascript使用正则来验证电子邮箱的一个函数分享,很简单,但也很使用,在很多地方都可以用的到。
    2014-08-08
  • JSON中双引号的轮回使用过程中一定要小心

    JSON中双引号的轮回使用过程中一定要小心

    如果JSON对象中有属性是包含双引号当转换成字符串形式,将自动加上反斜线,详细请祥看本文
    2014-03-03
  • 老生常谈jacascript DOM节点获取

    老生常谈jacascript DOM节点获取

    下面小编就为大家带来一篇老生常谈jacascript DOM节点获取。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • ES6扩展运算符的使用方法示例

    ES6扩展运算符的使用方法示例

    es6新增加了一个运算符,叫做扩展运算符,这个运算符用在数组前面,会把数组展开变成各个独立的值,这篇文章主要给大家介绍了关于ES6扩展运算符的相关资料,需要的朋友可以参考下
    2021-07-07
  • js阻止移动端页面滚动的两种方法

    js阻止移动端页面滚动的两种方法

    本文主要介绍了js阻止移动端页面滚动的两种方法。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • javascript 禁止复制网页

    javascript 禁止复制网页

    常见的一些禁止复制网页的代码,但破解方法也不见容易,这里就不说了,可以看本站以前发布的文章。
    2009-06-06
  • 跨浏览器通用、可重用的选项卡tab切换js代码

    跨浏览器通用、可重用的选项卡tab切换js代码

    今天一同学对我说“好吧,我准备去学习”。我大惊,这老勾引我打dota的寂寞男竟然也去学习,于是我好奇他学什么,他说要搞一个选项卡切换js
    2011-09-09
  • JavaScript比较当前时间是否在指定时间段内的方法

    JavaScript比较当前时间是否在指定时间段内的方法

    这篇文章主要介绍了JavaScript比较当前时间是否在指定时间段内的方法,涉及javascript时间与字符串的转换及比较操作相关技巧,需要的朋友可以参考下
    2016-08-08
  • 你可能不知道的CORS跨域资源共享

    你可能不知道的CORS跨域资源共享

    这篇文章主要给大家介绍了关于CORS跨域资源共享的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用CORS具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • hash特点、hashchange事件介绍及其常见应用场景

    hash特点、hashchange事件介绍及其常见应用场景

    浅析hash特点、hashchange事件介绍及其常见应用场景(不同hash对应不同事件处理、移动端大图展示状态后退页面问题、原生轻应用头部后退问题、移动端自带返回按钮二次确认问题),hashchange和popstate事件触发条件
    2023-11-11

最新评论