Jquery Post UI 选项卡未与页面 anchor 正确链接

标签 jquery jquery-ui anchor

我使用页面 anchor 将用户引导至菜单中的特定选项卡。但是,当您进入带有选项卡的页面时,单击链接不会重定向。它只是更改 URL 中的哈希值。知道如何解决这个问题吗?

示例链接

http://www.website.com/page#1

顺便说一句,这是在 WordPress 上。

jQuery(document).ready(function($){
    $(function() {
        $( "#tabs" ).tabs();
    if(document.location.hash!='') {
            //get the index from URL hash
            tabSelect = document.location.hash.substr(1,document.location.hash.length);
        $("#tabs").tabs('select',tabSelect-1);
    }
    });
});

最佳答案

您需要使用 jquery 监听 hashchange 事件来检测哈希何时更改,因为这些更改不会触发页面加载。有关详细信息,请参阅此答案:On - window.location.hash - Change?

编辑 - 更多信息

正如上面链接中的答案所说,这对于不同的浏览器有不同的工作方式,最终您将从 Ben Alman 的脚本中获得最佳结果(正如 Joseph 在下面提到的那样)。但让我们把它分解一下。

这是一个将哈希值推送到 h1 标记的简单示例:

<!DOCTYPE html>
<html>
<head>
<title>Hash Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
    function getHash() {
        return document.location.hash.substr(1); 
    }

    $(document).ready(function() {
        if(document.location.hash != '') {
            $('#sectionName').html(getHash());
        }
        $(window).bind('hashchange', function() {
            $('#sectionName').html(getHash());
        });
    });
</script>
</head>

<body>
<h1 id="sectionName"></h1>
<a href="#1">1</a> <a href="#2">2</a> <a href="#3">3</a>
</body>
</html>

此示例适用于大多数现代浏览器,包括 IE8,但需要注意的是,仅更改 URL 中的哈希值不会在 IE 中创建新的历史记录条目。由用户交互引起的哈希更改将很好地创建历史条目。

如果您打算支持 IE7 及更低版本,那么最好的方法是使用 Ben's plugin ,这稍微改变了我们的代码,因为您订阅了插件创建的事件函数,而不是使用 bind 来监听事件:

<!DOCTYPE html>
<html>
<head>
<title>Hash Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript" src="jquery.ba-hashchange.min.js"></script>
<script type="text/javascript">
    function getHash() {
        return document.location.hash.substr(1); 
    }

    $(document).ready(function() {
        $(window).hashchange(function() {
            $('#sectionName').html(getHash());
        });
        //trigger the change for a hash set at page load
        if(document.location.hash != '') {
            $(window).hashchange();
        }
    });
</script>
</head>
<body>
    <h1 id="sectionName"></h1>
    <a href="#1">1</a> <a href="#2">2</a> <a href="#3">3</a>
</body>
</html>

关于Jquery Post UI 选项卡未与页面 anchor 正确链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934875/

相关文章:

html - 即使存在依赖项,也无法识别 Bootstrap slider

html - 如何使用 CSS 在 anchor 上标文本中制作统一的下划线?

jquery-ui - 一位数字月份没有前导零的jQuery Datepicker问题

jquery - 如何使用 jQuery UI 设置无序列表的样式,以便元素以 UI 图标而不是默认列表符号开头?

JQuery UI 日期选择器 : How to add next/previous year buttons

javascript - 通过 jquery 使用输入标题作为 div 的文本

jquery-ui - 防止JQuery的恶意覆盖

javascript - 通过JS转到另一个html文件

html - 整体 div 上的链接颜色

jquery - 如何拆分输入值并插入到 tspan 中