使用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 相关文章推荐
Mootools 1.2教程 定时器和哈希简介
Sep 15 Javascript
js跑马灯代码(自写)
Apr 17 Javascript
JQUERY对单选框(radio)操作的小例子
Apr 25 Javascript
easyui datagrid 键盘上下控制选中行示例
Mar 31 Javascript
JavaScript+CSS无限极分类效果完整实现方法
Dec 22 Javascript
微信小程序 input输入及动态设置按钮的实现
Oct 27 Javascript
Vue实现左右菜单联动实现代码
Aug 12 Javascript
vue数据操作之点击事件实现num加减功能示例
Jan 19 Javascript
Node.js 进程平滑离场剖析小结
Jan 24 Javascript
解决vue 子组件修改父组件传来的props值报错问题
Nov 09 Javascript
基于js实现的图片拖拽排序源码实例
Nov 04 Javascript
Vue.js中v-for指令的用法介绍
Mar 13 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通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
给ECShop添加最新评论
2015/01/07 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
javascript动画效果类封装代码
2007/08/28 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
window.dialogArguments 使用说明
2011/04/11 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
React服务端渲染(总结)
2017/07/01 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
Python读取Excel的方法实例分析
2015/07/11 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
python 文件查找及内容匹配方法
2018/10/25 Python
python输入错误后删除的方法
2019/10/12 Python
Tensorflow 多线程设置方式
2020/02/06 Python
银行实习生的自我评价
2013/12/09 职场文书
中华魂演讲稿
2014/05/13 职场文书
财务人员担保书
2014/05/13 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
教师自我剖析材料
2014/09/29 职场文书
学校师德师风整改措施
2014/10/27 职场文书
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技