选项卡区域非常棒,但是当您开始使用超过 3 或 4 个不同选项卡时,它们会变得有点拥挤,因此提供其他导航方法是有意义的。 我认为提供通用位置的“下一个”/“上一个”按钮是有意义的,这样您甚至不需要移动光标,只需单击即可浏览每个选项卡。
jQuery UI 使创建选项卡区域变得非常容易,因此该框架基于此。 但是,就“下一个”/“上一个”按钮而言,我们必须自己动手。 幸运的是,jQuery UI 选项卡确实具有可用于切换选项卡的函数。 我们可以将其绑定到文本链接以完成切换选项卡的操作
$('#my-text-link').click(function() { // bind click event to link
$tabs.tabs('select', 2); // switch to third tab
return false;
});
但是我们希望尽可能聪明地做到这一点。 所以我们想
- 将链接动态添加到每个面板。 如果添加或删除了面板,则“下一个”/“上一个”按钮会自动调整以适应新流程。 另外,链接不会在禁用 JavaScript 的情况下尴尬地出现
- 确保第一个面板上没有“上一个”按钮
- 确保最后一个面板上没有“下一个”按钮
这是我的做法
$(function() {
var $tabs = $('#tabs').tabs();
$(".ui-tabs-panel").each(function(i){
var totalSize = $(".ui-tabs-panel").size() - 1;
if (i != totalSize) {
next = i + 2;
$(this).append("<a href='#' class='next-tab mover' rel='" + next + "'>Next Page »</a>");
}
if (i != 0) {
prev = i;
$(this).append("<a href='#' class='prev-tab mover' rel='" + prev + "'>« Prev Page</a>");
}
});
$('.next-tab, .prev-tab').click(function() {
$tabs.tabs('select', $(this).attr("rel"));
return false;
});
});
我今天在客户的网站上实现了类似的功能。 这是一个更好的解决方案。 谢谢!
我使用的是另一种基于选项卡的内容版本; 但是我真的很喜欢添加“上一个”/“下一个”按钮。 不过我想……是否可以通过某种方式让“上一个”/“下一个”按钮改为显示它们所导航到的选项卡的标题。
就用户友好型导航而言,这将是最全面的选项——用户将确切地知道他们将通过“上一个”/“下一个”选项卡选项或顶部导航栏跳转到哪个位置。
这是一个聪明的主意,我会研究一下,我相信这是可行的。
我喜欢 Rob 的想法。 我需要一个解决方案,允许我为选项卡命名。 这样它更像是一个用户可以理解的有语义的逐步过程。 毕竟谁知道哪些信息与哪个#相关联。
这样可以避免这种情况:“糟糕,我在联系表格上弄错了……嗯,哪个数字又是哪个? 点击 点击 点击 点击。”
在 IE 7 中查看此演示。 “下一个”/“上一个”选项卡乱了。 除此之外,感谢您的代码!
感谢分享
用 php 做是不是更好? 因为这几乎是相同的解决方案,但对于屏幕阅读器和不使用 js 的浏览器来说更好? 调试工作也更少..
但是,如果这是您想要的,这是一个不错的解决方案,谢谢 Chris :)
但是,选项卡需要 JavaScript 才能工作……。
在 IE7 中无法正常工作,我认为您需要添加
.ui-tabs .ui-tabs-panel {overflow:auto} 我认为这将修复错误。 但未经测试
因此我进行了一些测试,发现了一些使其正常工作的方法。 您可以将 display 设置为左浮动,并添加 100% 的宽度。 唯一的问题是您需要设置一个静态高度才能使它正常工作。 我还尝试在它周围添加一个 div 包装,并创建所需的空格,但效果并不好。 然后我尝试通过向包装 display 的 div 添加填充来进行黑客攻击,这可以正常工作,但在 FF 中产生了很大的空格。 好吧,我玩够了,很想听听这个问题是如何解决的。 这可能是一个我没想到要尝试的小修复,好吧,一如既往地感谢 Chris。
我在 Firefox 3 中玩了一下,非常棒,但是它会在水平/垂直滚动之间交替显示,即使选项卡之间没有内容更改。 否则这是一个很棒的教程!
感谢您的分享。
简单的问题,您如何将淡入淡出动画添加到选项卡更改时的内容。
有很多更好的基于选项卡的东西
http://tutorialblog.org/10-javascript-ajax-tabs/
http://www.noupe.com/javascript/37-great-ajax-css-tab-based-interfaces.html
很棒的文章,选项卡是当今网络上使用最广泛的网络界面。 感谢分享
谢谢 Chris!
这是一个不错的效果
好主意。
如果您只想使用选项卡外部的两个链接,而不是在每个选项卡中添加“下一个”和“上一个”链接,您还可以使用 $tabs.data('selected.tabs'); 来检索当前选定选项卡的索引,并使用“tabsselect”事件来启用/禁用链接。
这个解决方案很有道理……。
感谢您的想法!!!
这个解决方案确实很优雅。 感谢您的文章。
我喜欢这个,谢谢您
我希望能有 ExtJS 样式的选项卡
问题是,如果有人从搜索引擎搜索隐藏内容,隐藏内容实际上不利于用户体验。 我几个月前写了一篇关于此的博客文章
Ajax 网站和隐藏内容的一个根本问题
此外,如果您没有使用 css 预加载技术,对于禁用 javascript 的人来说,您将遇到可访问性问题
CSS 预加载
不错的解决方案!
我唯一的建议是用 var 声明变量 'i'、'next' 和 'prev'。 由于这些变量没有用 var 声明,因此它们被放入全局命名空间。
非常感谢您提供这种优雅的解决方案。 在每个选项卡上添加图片时,它会非常漂亮。
非常感谢,但我可以增加选项卡内的内容宽度吗。
此外,select 现在已弃用。 因此,我们必须使用“active”参数来获取和设置活动选项卡
以下是代码的 JS 部分
您应该在选项卡 div 中添加“a href”标签,带有“btnPrev”和“btnNext”类
大家好,我遇到了一个问题,你能帮我吗?
我把这个 ui-tabs 放到“spry 选项卡面板”中,第一个选项卡工作正常
但其他选项卡出现错误.. 它不起作用 =(
请帮助我,提前感谢
您有链接或示例吗?
有这么多选项卡,但我认为 Jquery UI 选项卡最适合我。 感谢您的教程
我如何使其自动进行,例如每 5 秒进行一次?
谢谢
它工作正常。 这是一个很棒的解决方案。 我很喜欢它。