JavaScript浏览器选项卡效果


Posted in Javascript onAugust 25, 2010

有图如下:
JavaScript浏览器选项卡效果
代码如下:

/* 
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">×</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和DOM Interfaces来处理HTML
Oct 09 Javascript
jquery ajax post提交数据乱码
Nov 05 Javascript
JQuery下拉框应用示例介绍
Apr 23 Javascript
浅谈JavaScript中null和undefined
Jul 09 Javascript
js实现楼层效果的简单实例
Jul 15 Javascript
很实用的js选项卡切换效果
Aug 12 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
Dec 12 Javascript
Vue 过渡(动画)transition组件案例详解
Jan 22 Javascript
jQuery实现全选、反选和不选功能
Aug 16 jQuery
Javascript获取某个月的天数
May 30 Javascript
深入了解js原型模式
May 30 Javascript
微信小程序实现多行文字滚动
Nov 18 Javascript
Javascript之旅 对象的原型链之由来
Aug 25 #Javascript
Javascript new关键字的玄机 以及其它
Aug 25 #Javascript
jquery下组织javascript代码(js函数化)
Aug 25 #Javascript
jquery实现居中弹出层代码
Aug 25 #Javascript
jquery下实现overlay遮罩层代码
Aug 25 #Javascript
在网页中使用document.write时遭遇的奇怪问题
Aug 24 #Javascript
javascript下string.format函数补充
Aug 24 #Javascript
You might like
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
php 判断数组是几维数组
2013/03/20 PHP
PHP和C#可共用的可逆加密算法详解
2015/10/26 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
js实现鼠标触发图片抖动效果的方法
2015/02/27 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
python 文件与目录操作
2008/12/24 Python
Python生成随机MAC地址
2015/03/10 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
python 自动去除空行的实例
2018/07/24 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
Python调用.NET库的方法步骤
2019/12/27 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
Python gevent协程切换实现详解
2020/09/14 Python
python爬虫基础之urllib的使用
2020/12/31 Python
预备党员转正思想汇报
2014/01/12 职场文书
物业经理自我鉴定
2014/03/03 职场文书
五好关工委申报材料
2014/05/31 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
社区端午节活动总结
2015/02/11 职场文书
2015年社区工会工作总结
2015/05/26 职场文书