【问题标题】:how to dynamically alter the hash location un a url based on link clicks如何根据链接点击动态更改 url 中的哈希位置
【发布时间】:2011-02-13 14:27:41
【问题描述】:

我只使用一个链接实例,但我想整合我的代码并为每个链接实例重复使用相同的 sn-p。

目前我有工作:

$("nav a").live('click', function(){
        window.location.hash = '!/' + usr + '/' + $(this).attr("href").replace('.php', '/');
        origHash = $(this).attr("href");
        return false;
    });
$("#files-left-pane a").live('click', function(){
        window.location.hash = '!/' + usr + '/files/' + $(this).attr("href").replace('.php', '/');
        origHash = $(this).attr("href");
        return false;
    });
    $(window).bind('hashchange', function(){
            dump = window.location.hash;
            newHash = window.location.hash.substring(3).replace(usr + '/', '').replace('/', '.php');//.replace('files/', '');
            //newHash = window.location.hash.replace(dump, origHash, 'g');
            console.log(newHash);
            if (newHash) {
                $wrap.find("#main-content").fadeOut(200, function() {
                    $wrap.load(newHash + " #main-content", function() {
                        $content.fadeIn(function() {
                            $wrap.animate({
                                height: baseHeight + $content.height() + "px"
                            }, 500);
                        });
                    });
                });
            }
    });

现在,如果用户点击 $("nav a") 它将使 window.location.hash 看起来像这样

(在这个例子中,用户点击<a href="files.php">Files</a>) www.site.com/#!/s2xi/files/

然后 $(window).bind('hashchange') 会将哈希转换为

www.site.com/files.php

然后,如果用户单击位于 files.php 中的子菜单中的 $("#files-left-pane a")。 window.location.hash 将如下所示:

(在这个例子中,用户点击<a href="buy.php">Buy</a>) www.site.com/#!/s2xi/files/buy/

然后 $(window).bind('hashchange') 应该将哈希转换为

www.site.com/buy.php

【问题讨论】:

    标签: javascript hash


    【解决方案1】:

    如果你想要的只是最后一个单词并添加“.php”,那很容易 你有两种方法,我认为最简单的一种是拆分(另一种是正则表达式)。

    var splittedHash = window.location.hash.split("/")
    newHash = splittedHash[splittedHash.length - 2] + ".php";
    

    应该很容易做到这一点。

    顺便说一下,正则表达式的版本是:

    newHash =  window.location.hash.match(/[^\/]*\/$/)[0].replace("/","") + ".php"
    

    【讨论】:

    • 对,但我也想从第二次点击事件的 url 中删除 #!/user/files/ 并将 .php 添加到页面名称。
    • 我很难理解你想做什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多