使用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 相关文章推荐
不要小看注释掉的JS 引起的安全问题
Dec 27 Javascript
在多个页面使用同一个HTML片段的代码
Mar 04 Javascript
js实现类似jquery里animate动画效果的方法
Apr 10 Javascript
javascript中Function类型详解
Apr 28 Javascript
理解JavaScript的变量的入门教程
Jul 07 Javascript
jquery性能优化高级技巧
Aug 24 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
Nov 21 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
Dec 01 Javascript
微信小程序 页面跳转传递值几种方法详解
Jan 12 Javascript
jquery实现轮播图效果
Feb 13 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
Nov 10 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
实用函数9
2007/11/08 PHP
php sprintf()函数让你的sql操作更安全
2008/07/23 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
jQuery 性能优化指南(2)
2009/05/21 Javascript
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
JS验证不重复验证码
2017/02/10 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
python实现bitmap数据结构详解
2014/02/17 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
温泉秘密:Onsen Secret
2020/07/06 全球购物
护士专业推荐信
2013/11/02 职场文书
人力资源作业细则
2014/03/03 职场文书
爬山的活动方案
2014/08/16 职场文书
离婚协议书应该怎么写
2014/10/12 职场文书
检讨书范文
2019/04/16 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP
python 统计代码耗时的几种方法分享
2021/04/02 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python