Iva*_*ova 106 jquery twitter-bootstrap
我正在使用Twitter Bootstrap及其"标签".
我有以下代码:
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#add">add</a></li>
<li><a data-toggle="tab" href="#edit" >edit</a></li>
<li><a data-toggle="tab" href="#delete" >delete</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
选项卡正常工作,但URL中没有添加#add,#edit,#delete.
当我删除data-toggleURL更改,但选项卡不起作用.
对此有何解决方案?
tom*_*bak 254
试试这个代码.它根据页面加载的哈希将tab href添加到url +打开选项卡:
$(function(){
var hash = window.location.hash;
hash && $('ul.nav a[href="' + hash + '"]').tab('show');
$('.nav-tabs a').click(function (e) {
$(this).tab('show');
var scrollmem = $('body').scrollTop() || $('html').scrollTop();
window.location.hash = this.hash;
$('html,body').scrollTop(scrollmem);
});
});
Run Code Online (Sandbox Code Playgroud)
Aid*_*dan 49
完整解决方案需要三个组件:
我不认为这里的任何评论,也没有接受的答案,处理所有这些情况.
由于涉及到相当多,我认为它是最小的jQuery插件:https://github.com/aidanlister/jquery-stickytabs
您可以像这样调用插件:
$('.nav-tabs').stickyTabs();
Run Code Online (Sandbox Code Playgroud)
我已为此发了一篇博客文章,http://aidanlister.com/2014/03/persisting-the-tab-state-in-bootstrap/
She*_*row 24
使用data-toggle="tab" 要求插件处理选项卡,在执行它时调用preventDefault事件(github上的代码).
您可以使用自己的选项卡激活,并让事件通过:
$('.nav-tabs a').click(function (e) {
// No e.preventDefault() here
$(this).tab('show');
});
Run Code Online (Sandbox Code Playgroud)
您必须删除该属性 data-toggle="tab"
如果您有疑问,请检查文档.
hal*_*ilb 10
由于您的锚元素已经更改了url哈希,因此监听onhashchange事件是另一个不错的选择.正如@flori已经提到的,这种方法适用于浏览器后退按钮.
var tabs$ = $(".nav-tabs a");
$( window ).on("hashchange", function() {
var hash = window.location.hash, // get current hash
menu_item$ = tabs$.filter('[href="' + hash + '"]'); // get the menu element
menu_item$.tab("show"); // call bootstrap to show the tab
}).trigger("hashchange");
Run Code Online (Sandbox Code Playgroud)
最后,在定义侦听器之后触发事件也有助于在页面加载时显示正确的选项卡.
| 归档时间: |
|
| 查看次数: |
80240 次 |
| 最近记录: |