使用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 相关文章推荐
跨域表单提交状态的变相判断代码
Nov 12 Javascript
Lab.js初次使用笔记
Feb 28 Javascript
jQuery实现平滑滚动到指定锚点的方法
Mar 20 Javascript
jQuery实现的图文高亮滚动切换特效实例
Aug 10 Javascript
简单谈谈javascript Date类型
Sep 06 Javascript
JS实现简单抖动效果
Jun 01 Javascript
Vue中定义全局变量与常量的各种方式详解
Aug 23 Javascript
Vue监听事件实现计数点击依次增加的方法
Sep 26 Javascript
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 jQuery
node.js监听文件变化的实现方法
Apr 17 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
Feb 20 Javascript
使用Mock.js生成前端测试数据
Dec 13 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
PHP在Web开发领域的优势
2006/10/09 PHP
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
input按钮的事件处理大全
2010/12/10 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
如何使用angularJs
2017/05/08 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
vue生命周期的探索
2019/04/03 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
标记环介质访问控制协议
2016/03/27 面试题
新员工试用期自我鉴定
2014/04/17 职场文书
2014年新教师工作总结
2014/11/08 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
Nginx反向代理学习实例教程
2021/10/24 Servers