使用Bootstrap Tabs选项卡Ajax加载数据的实现以及遇到的问题;

bootstrap动态生成tab 点击左侧菜单栏选项时,在右侧生成对应tab页面,包含嵌套iframe和div实现方法 立即下载

博客搬家了, 新地址 [ http://wuwz.org ],是时候换上HEXO了

HTML代码(仅展示了部分关键性代码)

<li class="active">
    <a href="#home" data-toggle="tab" name="menu-ctrl"> 
        <span class="glyphicon glyphicon-home">&nbsp;</span> 主页 
        <span class="sr-only">(current)</span>  
    </a>
</li>
<li>
    <a href="#test-paper"> 
        <span class="glyphicon glyphicon-list-alt">&nbsp;</span> 试卷库
    </a>
</li>
<li>
    <a href="#favorite"> 
        <span class="glyphicon glyphicon-bookmark">&nbsp;</span> 我的收藏
    </a>
</li>
<li>
    <a href="#about">
        <span class="glyphicon glyphicon-info-sign">&nbsp;</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加载数据实现 本文实例为大家分享了Bootstrap Tabs选项卡Ajax加载数据的具体代码,供大家参考,具体内容如下 HTML代码(仅展示了部分关键性代码) <li class=active> <a> <span class=glyphicon> </span> 主页 <span class=sr-only>(current)</span> </a> </li> <li> <a> <span class=glyp 立即下载

相关推荐

Bootstrap Table 中的ajax属性

网上有挺多Bootstrap Table结合ajax的例子,但新版Bootstrap Table在构造的时候给ajax属性一个带请求的函数就行了。 一、官方示例 <link href="https://unpkg.com/bootstrap-table@1.18.3/dist/bootstrap-table.min.css" rel="stylesheet"> <script src="https://unpkg.com/bootstrap-table@1.18.3/dist/b.

AE_yang的博客 2729

Bootstrap tab页的动态ajax加载

实现这样的功能,点击tab导航ajax动态加载页面,当加载过之后,点击则不再重新加载,直接显示原来加载的页面。 tab页面代码: &lt;!-- Nav tabs --&gt; &lt;ul class="nav nav-tabs" role="tablist" id="maintab"&gt;   &lt;li class="active"&gt;&lt;a href=

瞌睡猫 5114

bootstrap table通过ajax添加数据

先通过ajax获取数据 在通过load方法渲染数据到table中显示 $("#demo-table").bootstrapTable("load", data) 后台返回的数据格式必须为json {total:200,rows:[{'XXXXX': 'XXXXX'}]}...

文大帅的博客 1万+

bootstrap中tab页动态增加和关闭

【代码】bootstrap中tab页动态增加和关闭。

qq_33647211的博客 1045

【亲测免费】 jQuery Bootstrap Scrolling Tabs 使用指南

jQuery Bootstrap Scrolling Tabs 使用指南 项目介绍 jQuery Bootstrap Scrolling Tabs 是一个为Bootstrap框架设计的插件,它允许你在导航标签(tabs)过多而无法在一个可视区域内全部展示时,实现垂直或水平的滚动功能。该插件自动调整以检测是否需要滚动,非常适合响应式设计,确保在不同屏幕尺寸下都能优雅显示。通过添加左右箭头来指示可滚...

gitblog_00541的博客 1030

Bootstrap tab选项卡实现AJAX加载不同的JSP页面的方法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34050427的博客 1250

tabs ajax 加载html

<br />1,如何使用ajax加载html页面:<br />    代码如下:<br /> $("#add").click(function () { var newLabel = "A New Tab!"; $("#tabs").tabs("add","tabContent.html", newLabel); <br /> <br /> <br />问题   :动态生成选项卡时,<a>标记id与内容的id不一样,如图:<br /> <b

wwttqq85538649的专栏 580

Echarts 图表放到bootstraptabs中只加载第一个tabs内图表

问题:一个页面中使用bootstrap tabs,点击第二个tab,不现实,仍显示第一个tabs中的图表 1.html代码 <div class="panel panel-default"> <div class="panel-heading"> ...

chenghui4603的博客 371

AdminTLE 中使用Tab 选项卡

一、下载BootStrap插件(bootstrap.addtabs) 插件地址:https://gitee.com/hbbcs/bootStrap-addTabs 下载后再页面中引入css和js 二、编写html 使用AdminLTE中index.html为例进行修改 1、修改内容部分:找到内容部分<div class="content-wrapper">,将该标签替换为如下代码 <div class="content-wrapper" id="content-wrapp

wangdaoyin2010的专栏 2703

EasyUI综合布局Layout二.银行后台局部实现模仿

本章案例实现,在左侧点击手风琴框内的内容的时候,实现在右侧的主界面区域,将要连接的页面给显示出来,主要属性是jquery的过滤标签[]和attr(),html()方法,以及tabs组件的exists和select方法. Tabs  标签页/选项卡 依赖 panel linkbutton 用法示例 创建tabs 1. 经由标记创建Tabs 从标记创建Tabs更容易,我们

张晨光老师的播客 1949

EasyUI组件使用

EasyUI组件使用EasyUI是基于jQuery的UI插件集合体,目标就是帮助web开发者更加轻松的打造出功能丰富并且美观的界面,重点是不需要编写复杂的JavaScript代码,不需要对css有深入的了解,只需要一些简单的html标签或者jQuery代码。使用 环境搭建 导入响应的css和js <link rel="stylesheet" type="text/css" href="/ee_D

你不勇敢,没人替你坚强! 1482

bootstrap 表格 ajax,bootstrap jquery dataTable 异步ajax刷新表格数据实现方法

异步请求var postData = {"env_name" : new_env_name,"env_url": new_env_url,"env_desc" : new_env_desc};$.ajax({type: 'POST',url : '/test_env_add/',data : postData,dataType : 'json',success : function(data){$...

weixin_39635130的博客 700

bootstraptable所有监听事件合集介绍

bootstraptable事件导航: onAll事件 onClickRow事件onDblClickRow事件 onClickCell事件 onDblClickCell事件onSort事件 onCheck事件 onUncheck事件 onCheckSome事件 onUncheckSome事件 onLoadSuccess事件 onLoadError事件 onColumnSwitch事件 onPageChange事件 onSearch事件 onToggle事件 onPreBody事件 onPostBody事件

qq_34774455的博客 4575

JQuery ajax使用方式小结

jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。 最简单的情况下,$.ajax()可以不带任何参数直接使用。 注意,所有的选项都可以通过$.ajaxSetup()函数来全局设置。 回调...

我们轻松了,并不是生活越来越容易了,而是我们越来越强 331

bootstrap之改变表格的宽度

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=de...

Java技术 8320

bootstrap table动态加载列表头及数据

首先需要后端返回的数据格式为:(后端代码忽略,根据各自情况返回,数据结构跟下图差不多) 注意 表头数据:titles和表数据rows的格式 titles的field就是rows的key,有多少个titles,rows中的一个数据就有多少个对应的field与其对应 前端代码: function initTable(){ ...

未名胡的博客 4538
下一篇: 基于Java实现的简单且通用的分页实现封装 <Pagiation>
征途龙
博客等级 码龄11年 5粉丝 5原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值