【问题标题】:jQuery Tabs - Don't Load Tab via # (tab content id)jQuery 选项卡 - 不要通过 # 加载选项卡(选项卡内容 id)
【发布时间】:2014-03-30 00:29:58
【问题描述】:

我正在运行 jQuery v2.1.1-beta1 和 jquery-ui-1.10.4,脚本文件中包含以下 JS:

$(document).ready(function(){
    $('.festival-list').tabs({
        beforeActivate: function( event, ui ) {
            ui.newTab.index();
        }
    });
};

我想解决两个问题:


问题一:

我有一系列工作正常的选项卡。我有一个带有 li 的标签,其 id 为 Press (#press)。如果我加载 url (http://website-url.com/news/#press)。内容(标签块)正确显示。

但是,当此 url 用作页脚中的 href 时,页面会加载链接,但无法正确加载选项卡 (#press)。目前我必须点击页脚链接然后点击相关选项卡来加载块,没有自动化。


问题 2:

其次,我想对 url 进行哈希处理,希望这对导航期间的 UI 有所帮助。

【问题讨论】:

    标签: javascript jquery jquery-ui-tabs


    【解决方案1】:

    url 中的哈希仅适用于初始加载,因为$.ready 函数仅运行一次(在页面加载时)。如果您想在页面加载后确保选项卡和 URL 相互匹配,您可以执行类似

    的操作
        $(window).on('hashchange', function processHashChange(e) {
            ...
        });
    

    如果您正在寻找更多站点范围的解决方案,特别是如果您希望 UI 执行基于 URL 哈希的复杂行为(例如,不仅仅是在页面的一部分中隐藏/显示选项卡),您可能想研究一个合适的 JavaScript 路由库,比如 Crossroads

    【讨论】:

    • 感谢您的回答,我会在回到 comp 时修改并检查!