Bootstrap使用table切换后js插件渲染失败的问题

一、前言

最近在写nav的table切换过程中发现一个诡异的现象,第一次加载过程中如果插件位置不在第一个,那么无法插件渲染。
其他需要html渲染的插件也同样会有问题,例如char.js、ueditor。

二、过程

下图所示,是一个博客的table切换
张浩博客table切换
张浩博客图片上传

  1. 上传图片我用的webupload,点击图片时自动上传,更换图片,但是这个插件所在位置处于table切换的第二个,所以无论如何点击,插件无法渲染,因为bootstrap中table.js使用的是锚链接。href="#notice"
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#notice" aria-controls="notice" role="tab" data-toggle="tab">网站公告</a></li>
<li role="presentation" ><a href="#centre" aria-controls="centre" role="tab" data-toggle="tab">会员中心</a></li>
<li role="presentation"><a href="#contact" aria-controls="contact" role="tab" data-toggle="tab">联系站长</a></li>
</ul>
  1. 我们可以查看bootstrap官网中说明

When showing a new tab, the events fire in the following order:

  1. hide.bs.tab (on the current active tab)
  2. show.bs.tab (on the to-be-shown tab)
  3. hidden.bs.tab (on the previous active tab, the same one as for the hide.bs.tab event)
  4. shown.bs.tab (on the newly-active just-shown tab, the same one as for the show.bs.tab event)

其中有四种事件类型,我们只要调用show.bs.tab这个事件就能在锚链接跳转时渲染js插件了

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  e.target // newly activated tab
  e.relatedTarget // previous active tab
})
  1. 接下来我们在项目中使用
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
                        //shown.bs.tab为tab选项卡高亮事件,
                        //这里需要注意!
                        // 获取已激活的标签页的名称
                        var activeTab = $(e.target)[0].hash;
                        //hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分)

                        if(activeTab === "#centre"){
                            //当相应的标签被点击时,进行图片上传渲染
                            //logo上传
                            /*init webuploader*/
                        }
}

完美解决!

三、总结

我们在使用插件过程中,会不断的发现坑点,特别加载多个jq插件的时候,多看文档会让我们解决问题的路上少走弯路。
欢迎关注我的博客 www.zhanghao520.com,更多技术问题一起研究!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Bootstrap Table 是一个基于 Bootstrap 的可扩展的表格插件,支持多种功能扩展、多种数据源以及自定义格式化等。如果要在 Bootstrap Table使用日期控件,可以使用 Bootstrap Datepicker 插件。 下面是一个使用 Bootstrap TableBootstrap Datepicker 的例子: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Bootstrap Table Demo</title> <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.18.1/bootstrap-table.min.css"> <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.min.css"> </head> <body> <div class="container"> <table id="table" data-toggle="table" data-url="data.json" data-pagination="true" data-search="true" data-show-refresh="true" data-show-toggle="true" data-show-columns="true"> <thead> <tr> <th data-field="id">ID</th> <th data-field="name">Name</th> <th data-field="date" data-formatter="dateFormat">Date</th> </tr> </thead> </table> </div> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.18.1/bootstrap-table.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script> <script> function dateFormat(value, row, index) { return value ? moment(value).format('YYYY-MM-DD') : ''; } $(document).ready(function() { $('#table').bootstrapTable(); $('#table').on('editable-save.bs.table', function(e, field, row, oldValue, $el) { if (field === 'date') { row.date = moment(row.date).toISOString(); } }); $('.datepicker').datepicker({ format: 'yyyy-mm-dd', autoclose: true }); }); </script> </body> </html> ``` 在这个例子中,我们首先引入了 BootstrapBootstrap TableBootstrap Datepicker 的 CSS 和 JavaScript 文件。然后在 HTML 中创建一个表格,并指定了数据源、分页、搜索、刷新、切换列等选项。 表格中的日期列使用了 `data-formatter` 属性来指定自定义格式化函数 `dateFormat`,这个函数使用了 Moment.js 库来将日期格式化成 YYYY-MM-DD 的形式。 在 JavaScript 中,我们使用了 jQuery 的 `$(document).ready()` 函数来初始化 Bootstrap Table,并在表格保存编辑后将日期格式化成 ISO 8601 格式。我们还使用Bootstrap Datepicker 来创建一个日期控件,以便用户可以方便地选择日期。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值