`
vakin.jiang
  • 浏览: 147221 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JqueryUI之tabs组件拓展:实现卡片式打开多页面

阅读更多

关注我的微博http://weibo.com/2139463997

 

需求:

1.采用卡片式打开多页面

2.过滤重复打开页面如果该页面已经打开,只需要切换至该tab

3.能够在iframe页面直接关闭加载该页面的tab容器

CSS:

  #frame_tabs { margin-top: 0px;}
  #frame_tabs ul li{height: 25px;}
  #frame_tabs a{height: 20px;}
  #frame_tabs li .ui-icon-close { float: left; margin: 0.4em 0.2em 0 0; cursor: pointer; }
  #frame_tabs .ui-tabs-panel{padding: 0px; overflow:hidden;}
  #navibar {height:538px; overflow:hidden;}
  #frame_tabs .navi{height:530px; overflow:hidden;}

 JS:

$(function() {
		initFramePanel();
		//
		tab_counter = $frame_tabs.tabs( "length" ) + 1; 
 });

 var tab_counter;	 
 var $frame_tabs;
 var frame_width = 900;
 function initFramePanel(){
   
		$frame_tabs = $('#frame_tabs').tabs({
			tabTemplate: '<li><a href="#{href}">#{label}</a> <span class="ui-icon ui-icon-close">Remove Tab</span></li>',
			add: function(event, ui) {
			    var index = $(this).tabs( "length" ) - 1;
				var url = $(this).tabs( "option", "url");
				var pageKey = url.replace('http://','').replace('/','');
				alert(pageKey);
				var iframeHtml = " <iframe id='frameA' name='frameA' width='" +frame_width+ "px' height='500px' src='" + url
			+ "' frameborder=0 scrolling='no'></iframe> <input type='hidden' value='"+ pageKey +"' />";
				$(ui.panel).html(iframeHtml);
				var selecting = $(this).tabs( "length" ) - 1;
				$(this).tabs( "option", "selected", index);
			}
		});

		$('#frame_tabs span.ui-icon-close').live('click', function() {
            var _li = $(this).parent();
            var index = $('li',$frame_tabs).index(_li);          
			$frame_tabs.tabs('remove', index);
	    });
 }


/** 载入节点url */
function addPageTab(url,title){
   
  // 当前页面状态(是否已经打开)
   var pageIsOpen = false;
   // 打开页面唯一标记
   var pageKey = url.replace('http://','').replace('/','');
   $("#frame_tabs input").each(function(index,elm){
        var inputVal = $(elm).val();
		if(inputVal == pageKey){
		  pageIsOpen = true;
		  $frame_tabs.tabs( "option", "selected", index);
		  return false;
		}
   });
	// 
    if(pageIsOpen)return;
   //
    $frame_tabs.tabs( "option", "url" , url);
	$frame_tabs.tabs('add', '#frame_tabs-'+tab_counter, title);
    tab_counter++;
}

// 关闭页面
//在frame页面通过调用关闭事件:window.parent.closePage()
function closePage(){
    $("#frame_tabs li").each(function(index,elm){
	    if($(elm).hasClass('ui-state-active')){
		    // 移出页面
		   $frame_tabs.tabs('remove',index);
		   return false;
		}
  });
}

 

html template:

<!-- tab template Start -->
	<div id="frame_tabs">
	    
		<div class="navi">
		  <ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
			<li class="ui-state-default ui-corner-top"><a href="#frame_tabs-1">Blank</a> </li>
          </ul>
		<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="frame_tabs-1"></div>
    </div>
</div>
<!--tab template End -->

 效果:



 

  • 大小: 38.5 KB
分享到:
评论
6 楼 abluedog 2011-12-15  
楼主的思路没问题,代码当然要稍微修改,跑是没有问题的,说有问题的再仔细研究研究吧。
5 楼 touch107 2011-11-24  
网络上多少人被你这例子骗了啊,事实证明你这例子是坑爹的!!!!!
4 楼 guiguo123 2011-03-28  
            tabTemplate: '<li><a href="#{href}">#{label}</a> <span class="ui-icon ui-icon-close">Remove Tab</span></li>',  
这行报错
3 楼 wm_gj 2010-09-06  
window.parent.$('#tt').tabs('close','修改日志');
2 楼 vakin.jiang 2010-09-06  
wm_gj 写道
能贴出完整应用代码吗?
找你的方法去做,没有达到附件图片中的效果啊
正好在用easyui-tabs做,但是iframe的一个修改页面,修改完成提交后,无法关闭页面所在选项卡,郁闷中

接触JS也才几个月,所以easyui我都没用过。我是通过样式来查找当前出于激活状态的页面的,你看看easyui-tabs生成的最终页面的html代码的结构吧,原理应该会差不多。。
1 楼 wm_gj 2010-09-05  
能贴出完整应用代码吗?
找你的方法去做,没有达到附件图片中的效果啊
正好在用easyui-tabs做,但是iframe的一个修改页面,修改完成提交后,无法关闭页面所在选项卡,郁闷中

相关推荐

    bootstrap整体架构图、组件类型、插件实现步骤

    Bootstrap是世界上最流行的前端开发框架之一,它为开发者提供了丰富的预设样式、组件和JavaScript插件,使得构建响应式和移动设备优先的网站变得容易。在深入理解Bootstrap的整体架构之前,我们先来了解一下其核心...

    jquery特效

    3. 导航菜单:jQuery可以轻松实现下拉菜单、多级菜单,以及响应式菜单,适应不同屏幕尺寸。 4. 图片懒加载:通过延迟加载远离视口的图片,提高页面加载速度,如Lazy Load插件。 5. 弹出框和模态窗口:例如jQuery ...

    BootStrap 主题模版下载

    8. `results.html`:这可能是一个搜索结果页面,Bootstrap的卡片组件可以很好地展示搜索结果,同时保持页面整洁。 9. `tabs.html`:Bootstrap的标签页组件使内容组织变得更加有序,用户可以轻松地在不同的内容板块...

    bootstrap中文文档

    Bootstrap是世界上最流行的前端开发框架之一,它为开发者提供了丰富的组件、样式和JavaScript插件,用于快速构建响应式、移动优先的网页项目。这份"bootstrap中文文档"是一个宝贵的资源,尤其对于那些希望在中国语言...

    Bootstrap快速入门GitChat1

    2. **组件**:Bootstrap包含各种预定义的UI组件,如警告提示(alerts)、按钮组(button groups)、下拉菜单(dropdowns)、卡片(cards)、轮播(carousel)等。这些组件可以快速构建页面结构,提高开发效率。 3. ...

    Bootstrap Site Blueprints.zip

    2. **组件**:Bootstrap提供了多种预定义的UI组件,如导航栏(navbar)、按钮(button)、表单(form)、卡片(card)、下拉菜单(dropdown)、模态框(modal)等,这些组件大大简化了网页的构建过程,同时也保持了...

    前端项目-meshki.zip

    Meshki提供了一系列丰富的UI组件,如导航菜单、按钮、表单、卡片、模态框等,这些组件都是预先设计和优化的,可以直接用于项目中,极大地提高了开发效率。这些组件通常遵循Material Design或Flat UI设计原则,保证...

    Learn-Bootstrap

    4. **组件**:Bootstrap提供了多种预定义的UI组件,如按钮、表单、导航、模态框、下拉菜单、警告提示、卡片、进度条等。学习如何使用它们,并自定义以满足项目需求。 5. **JavaScript插件**:Bootstrap还包含了一些...

    创意bootstrap列表布局代码

    结合`.nav-pills`或`.nav-tabs`类可以实现药丸样式或标签页样式的列表,再搭配`.active`类可以高亮当前选中的项。 4. **JS特效**:JavaScript可能是为了添加动态效果,比如悬停效果、点击事件处理、滚动动画等。...

    Lesson-14-Bootstrap

    Bootstrap是世界上最流行的前端开发框架之一,它为开发者提供了丰富的组件、样式和JavaScript插件,用于快速构建响应式、移动优先的网页项目。本教程“Lesson-14-Bootstrap”将带你深入了解Bootstrap的魅力,并教你...

Global site tag (gtag.js) - Google Analytics