使用Bootstrap Tabs选项卡Ajax加载数据实现


Posted in Javascript onDecember 23, 2016

本文实例为大家分享了Bootstrap Tabs选项卡Ajax加载数据的具体代码,供大家参考,具体内容如下

HTML代码(仅展示了部分关键性代码)

<li class="active">
 <a href="#home" data-toggle="tab" name="menu-ctrl"> 
 <span class="glyphicon glyphicon-home"> </span> 主页 
 <span class="sr-only">(current)</span> 
 </a>
</li>
<li>
 <a href="#test-paper"> 
 <span class="glyphicon glyphicon-list-alt"> </span> 试卷库
 </a>
</li>
<li>
 <a href="#favorite"> 
 <span class="glyphicon glyphicon-bookmark"> </span> 我的收藏
 </a>
</li>
<li>
 <a href="#about">
 <span class="glyphicon glyphicon-info-sign"> </span> 关于
 </a>
</li> <!--- /. Nav tabs--->


<div id="myTabContent" class="tab-content">
 <!-- 试卷库页面 -->
 <div class="tab-pane fade" id="test-paper"></div>
 <!-- 收藏页面 -->
 <div class="tab-pane fade" id="favorite"></div>
 <!-- 关于页面 -->
 <div class="tab-pane fade" id="about"></div>
 <!-- 用户信息页面 -->
 <div class="tab-pane fade" id="user-info-page"></div>
</div> <!--- /.tab-content ---->

实现思路:

1.使用JavaScript激活tab选项卡:

$("a[href=['#about']").click(function(e){
 $(this).tab('show');
 e.preventDefault(); //阻止a标签的默认行为
});

2.使用jQuery的load()方法异步加载 tab-pane容器中的内容;

$('#about').load('pages/about.jsp');

大功告成!

那么接下来对上面的思路进行简单的封装

JavaScript代码:

/**
 * 激活tab选项卡并使用ajax异步加载内容 
* @param {Object} tabsId
* @param {Object} url
 */
function showTabs(tabsId,url) {
 $("a[href='#"+tabsId+"']").tab('show');
 var $tabContent = $('#'+tabsId);
 if($tabContent.length < 100) {
 $tabContent.load(url);
 //console.info(tabsId + ' load done!');
 }
}

//依次为每个tab导航a标签添加单击事件
$('a[href="#test-paper"]').click(function(e) {
 showTabs('test-paper','pages/test-paper.jsp');
 e.preventDefault();
});

//$('a[href=..]')...
//..
//.. 这么长的代码!!

考虑到每个a标签的绑定的都是click事件,只是参数不同而已, 可以尝试着把tabs的数据用json数组存储起来;

//准备tabs数据
var tabsData = [{
 "id" : "test-paper",
 "url" : "pages/test-paper.jsp"
},{
 "id" : "favorite",
 "url" : "pages/favorite.jsp"
},{
 "id" : "about",
 "url" : "pages/about.jsp"
},{
 "id" : "user-info-page",
 "url" : "pages/user-info.jsp"
}];

//遍历json数组,循环添加a标签click事件:
$(tabsData).each(function(){
 //console.info(this.id + "--->" + this.url);
 $("a[href='#"+this.id+"']").click(function(e) {
 showTabs(this.id,this.url);
 e.preventDefault();
 });
});

终于完成? No!实测运行中没有任何效果;这法子貌似行不通啊!原因暂时还在研究中(..)

这时我想到了jQuery的bind()函数:

bind(type,[data],fn);

//fn: 绑定到每个匹配元素的事件上面的处理函数
//可以尝试把每个tab的参数通过data传递到外部的function中,用作每个a标签的click响应函数

改写后的$.each()循环:

$(tabsData).each(function(){
 //console.info(this.id + "--->" + this.url);
 $("a[href='#"+this.id+"']").bind('click',{
 id : this.id,
 url : this.url
 },tabsHandler);
});
function tabsHandler(event) {
 var data = event.data;
 showTabs(data.id,data.url);
 return false; //阻止默认a标签响应
}

这次总算是成功了!

看下演示图:

使用Bootstrap Tabs选项卡Ajax加载数据实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 三种不同位置代码的写法
Oct 25 Javascript
COM中获取JavaScript数组大小的代码
Nov 22 Javascript
写给想学习Javascript的朋友一点学习经验小结
Nov 23 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
Dec 09 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
Aug 27 Javascript
JavaScript开发者必备的10个Sublime Text插件
Feb 27 Javascript
Node.js用readline模块实现输入输出
Dec 16 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
Jan 09 Javascript
JavaScript中为事件指定处理程序的五种方式分析
Jul 27 Javascript
js实现一款简单踩白块小游戏(曾经很火)
Dec 02 Javascript
JS实现放烟花效果
Mar 10 Javascript
Node.js API详解之 dgram模块用法实例分析
Jun 05 Javascript
ionic开发中点击input时键盘自动弹出
Dec 23 #Javascript
JS敏感词过滤代码
Dec 23 #Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 #Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
Dec 23 #Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
Dec 23 #Javascript
Bootstrap和Java分页实例第一篇
Dec 23 #Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
Dec 23 #Javascript
You might like
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
解析php php_openssl.dll的作用
2013/07/01 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
奇妙的js
2007/09/24 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
js精度溢出解决方案
2012/12/02 Javascript
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
python中的字典使用分享
2016/07/31 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
python中的yield from语法快速学习
2020/11/06 Python
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
工作求职信
2014/07/04 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
团结主题班会
2015/08/13 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS