【问题标题】:Internal Links with jQuery Address带有 jQ​​uery 地址的内部链接
【发布时间】:2011-12-22 18:08:38
【问题描述】:

我正在尝试实现可爱的地址插件来处理更漂亮的链接和使用后退按钮的内部链接。我设法让它工作,但是我注意到的一件事是,当它将 URL 从 /#section 更改为 /#/section 时,如果用户然后复制该 URL 并尝试在新窗口中打开它(或发送给朋友)它不会将用户带到页面上的那个部分。显然是因为它不再被认为是锚。

当用户通过 URL 导航时,我怎样才能让它位于正确的部分?

下面是我按照jQuery地址使用的sn-p代码:

$('nav a').click(function() { 
    var pageTitle = 'Kevin Dare Foundation | ' + $(this).html(); 
    $.address.value($(this).attr('href').replace(/^#/, ''));
    $.address.title(pageTitle);
});

这里是查看它的链接:http://nickdimatteo.com/kjd

【问题讨论】:

    标签: javascript jquery browser-history deep-linking hashbang


    【解决方案1】:

    如果有document.location.hash,最简单的方法可能是在文档加载时触发你拥有的代码:

    $('nav a').click(function() { 
        var pageTitle = 'Kevin Dare Foundation | ' + $(this).html(); 
        $.address.value($(this).attr('href').replace(/^#/, ''));
        $.address.title(pageTitle);
    });
    
    $(document).ready(function() {
        var hash = document.location.hash.replace(/^#\//, '');
        if(hash) {
            $('nav a[href="#' + hash + '"]').trigger('click');
        }
    });
    

    【讨论】:

    • 这很好用。有没有办法让它出现在页面加载部分,而不是加载页面并滚动到所需的部分?
    • 为此,您需要调整地址插件更改回调以更快地为滚动设置动画。需要某种状态变量来让它知道动画是慢还是快。
    猜你喜欢
    • 1970-01-01
    • 2012-06-26
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 2012-03-28
    • 2012-04-10
    相关资源
    最近更新 更多