使用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 相关文章推荐
jquery tools 系列 scrollable学习
Sep 06 Javascript
javascript 兼容所有浏览器的DOM扩展功能
Aug 01 Javascript
js实现点击添加一个input节点
Dec 05 Javascript
javascript瀑布流式图片懒加载实例
Jun 28 Javascript
Node.js 应用跑得更快 10 个技巧
Apr 03 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
Jun 12 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
Nov 09 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
Jun 22 Javascript
详解webpack编译速度提升之DllPlugin
Feb 05 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
Nov 25 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
Nov 01 Javascript
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
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中include()与require()的区别说明
2010/03/10 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
php递归实现无限分类的方法
2015/07/28 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
Stop SQL Server
2007/06/21 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
js实现批量删除功能
2020/08/27 Javascript
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
电大毕业生自我鉴定
2013/11/10 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
单位作风建设自查报告
2014/10/23 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
休学证明范本
2015/06/19 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python