使用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仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
Apr 24 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
Aug 18 Javascript
使用script的src实现跨域和类似ajax效果
Nov 10 Javascript
js实现发送验证码后的倒计时功能
May 28 Javascript
Bootstrap实现下拉菜单多级联动
Nov 23 Javascript
解决bootstrap-select 动态加载数据不显示的问题
Aug 10 Javascript
nuxt中使用路由守卫的方法步骤
Jan 27 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
Aug 20 Javascript
jquery html添加元素/删除元素操作实例详解
May 20 jQuery
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
Aug 06 Javascript
微信小程序实现简单购物车功能
Dec 30 Javascript
使用原生javascript开发计算器实例代码
Feb 21 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求小于1000的所有水仙花数的代码
2012/01/10 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP7常量数组用法分析
2016/09/26 PHP
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
bootstrapValidator表单验证插件学习
2016/12/30 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
梳理一下vue中的生命周期
2020/12/30 Vue.js
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
扩大国家免疫规划实施方案
2014/03/21 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
见习期个人总结
2015/03/05 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫