Как динамически изменить местоположение хеша и URL на основе кликов по ссылкам - PullRequest
0 голосов
/ 13 февраля 2011

У меня это работает только с одним экземпляром ссылок, но я хотел объединить свой код и повторно использовать один и тот же фрагмент для каждого экземпляра ссылок.

В настоящее время у меня есть работа:

$("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-left-pane a"), который находится в подменю, расположенном в файле files.php. Window.location.hash будет выглядеть так:

(в этом примере пользователь нажимает <a href="buy.php">Buy</a>) www.site.com/#!/s2xi/files/buy/

$ (window) .bind ('hashchange') должен затем перевести хеш в

www.site.com / buy.php

1 Ответ

0 голосов
/ 13 февраля 2011

Если все, что вам нужно, это взять последнее слово и добавить «.php», это просто. У вас есть два способа для этого, я думаю, что самый простой - это разделить (другой - регулярное выражение).

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

Должно легко сделать трюк.

Кстати, версия регулярного выражения:

newHash =  window.location.hash.match(/[^\/]*\/$/)[0].replace("/","") + ".php"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...