0

jquery ajax を使用してすべてのページをロードするサイトがあります。基本的にはそのまんま<a href="photos">photos</a>です。次に、jquery はこれを取得して正しいフォルダーに移動し、最後に .php を追加して、そのファイルをコンテンツ ウィンドウに読み込みます。次に、その href 属性 (この場合は写真) を配置し、URL の末尾に #current_pg_attr を配置します。したがって、コンテンツ ウィンドウに写真ページが表示されている場合は、www.mysite.com/#photos のようになります。また、私のメインメニューの1つに、ホバーなどでのみ表示されるサブメニューがあります。

<ul id="main_nav"><br />
    <li><a href="home">home</a></li><br />
    <li><a href="photos">photos</a><br />
        <div id="menu2_submenu_tooltip"><a href="?com=viewall">view all stuff</a></div><br />
    </li><br />
</ul>

サブメニューをクリックすると問題が発生するようになりました。すべて表示をクリックすると、www.mysite.com/?com=viewall#photosではなくwww.mysite.com/#?com=viewallに移動します。私は何を間違っていますか?URLにjquery #somethingを追加する行に関係していると思いますか? このエラー URL は、GET 変数を取得してそのページをロードするだけで回避できるため、問題ではありませんが、それでもこれを正しく取得したいと考えています。ちなみに、これが私の ajax jquery コードの一部です。

var curr_page_hash = window.location.hash;
    $('#main_center').load('content/' + curr_page_hash.substr(1) + '.php');
    window.location.hash = curr_page_hash;
    $('#left_nav ul li a').click(function() {
    var page = $(this).attr('href');
    $('#main_center').html('<div id="load_img"><img src="template/img/loading.gif" alt="Loading..." /></div>');
    $('#main_center').load('content/' + page + '.php');
    window.location.hash = '#' + page; 
            return false;     
    });

問題に関するヘルプはありますか?

4

1 に答える 1

0

元のハッシュを調べるには、次のようなことができます

// note I am not sure what window.location.hash returns if there is no hash but you should test that first to make this more efficient
var t = window.location;
var originalHash = "";
if(t.indexOf("#") > -1) {
   // grab the hash
   originalHash = window.location.hash;
}

これで元のハッシュが処理されます。新しいページを設定するには、コードをそのままにして、最後にこれを行うことができます

// don't need to add # because it is in originalHash already, it is safe to add originalHash because if there is no # in URL then it will be empty string
window.location.hash = page + originalHash; 

これを試してもうまくいかない場合は、質問を編集して最新のコードを投稿してください

于 2012-07-06T12:31:16.890 に答える