0

非常に賢い人たち!

私はこれに悩まされて1週間試しましたが、論理的な解決策を見つけることができません。

基本的に、ユーザーが2つの異なるリンクのセットをクリックするたびに、準備されたURLを追加する必要があります。

これまでのところ、私のコードではこれが発生します

$(selecter a.1).live('click', function(){
   window.location.hash = '!/' + usr + '/' + $(this).attr('href').replace('.php', '/');
}

これにより、URLは次のようになります。http ://www.site.com/!#/ username / page1

次に、関数を呼び出してURLのハッシュ変更を検出し、URLを元の状態に戻します。

$(window).bind('hashchange', function(){
            hash = window.location.hash;
            //if( hash.indexOf( "/files/" ) == 6 )
                //newHash = window.location.hash.substring(3).replace(usr + '/files', '').replace('/', '.php');
            //else
                newHash = window.location.hash.substring(3).replace(usr + '/', '').replace('/', '.php');
            //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);
                        });
                    });
                });
            }
    });

問題はありません。問題は、ユーザーがURLに少し異なる方法で追加したいリンクの2番目のセットをクリックしたときです。

$(selecter a.2).live('click', function(){
       window.location.hash = '!/' + usr + '/' + $(this).attr('href').replace('.php', '/');
}

次のようになります:http ://www.site.com/!#/ username / files / sub-page /

リンクのhrefは次のようになりますhref="files / sub-page.php"

私が抱えている問題は、ウィンドウをハッシュチェンジにバインドすると、最初のリンクセットにのみ適用できる元の「状態」にURLを戻そうとすることです。

元のhref値をwindow.location.hashに置き換えるだけでなく、それをうまく実現したのはなぜかという考えがありました...ユーザーがページをリロードした場合はどうなりますか?まあまあ!元のハッシュは失われます!また、URLはハッシュ変更の検出に依存しているため、適切なphpページをロードできます。

さて、次に、URLの最後の単語を除くすべてをなんとかして切り取り、replace('/'、'.php')を実行して拡張子を追加できると思いました...

さて、それに関する他の問題は、URLでfiles/ディレクトリにあるfiles/sub-page.phpを指していることです。

私はもともとすべてを1つのディレクトリに持っていて、手動でfiles /をURLに追加したかったのですが、同じロジックで問題が発生していたので、それらをfiles /というフォルダに移動して、jsをだまして残す方法を考えました。そこにあるそのディレクトリパス...

わかりました、それは私の話です...

助けてもらえますか?

4

1 に答える 1

0

運が良ければ:https ://github.com/allmarkedup/jQuery-URL-Parser

URLを解析し、URLの各ビットにアクセスする方法に関するヘルパーメソッドを提供します。

于 2011-02-17T18:03:20.807 に答える