使用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/Css 文件的代码
Jul 03 Javascript
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
Jul 10 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
Mar 21 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
Apr 12 Javascript
JavaScript中的toUTCString()方法使用详解
Jun 12 Javascript
JavaScript事件学习小结(一)事件流
Jun 09 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
Mar 08 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
Aug 10 Javascript
浅谈js获取ModelAndView值的问题
Mar 28 Javascript
基于Vue+element-ui 的Table二次封装的实现
Jul 20 Javascript
vue基本使用--refs获取组件或元素的实例
Nov 07 Javascript
angular异步验证器防抖实例详解
Mar 31 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 Mysql类 可以参考学习熟悉下
2009/06/21 PHP
PHP的基本常识小结
2013/07/05 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
PHP中串行化用法示例
2016/11/16 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
python动态加载包的方法小结
2016/04/18 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
详解Python的三种拷贝方式
2020/02/11 Python
基于Python绘制个人足迹地图
2020/06/01 Python
Python colormap库的安装和使用详情
2020/10/06 Python
pycharm永久激活超详细教程
2020/10/29 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
讲文明懂礼貌演讲稿
2014/09/11 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
升学宴家长答谢词
2015/09/29 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书