0

このページに従ってajax サイトを作成しています。それはかなり簡単ですが、私が直面している問題は、リンクが

   <a href="link.html">Link</a>

ハッシュタグの変更を無視して、コンテンツを更新するために ajax を使用する代わりに、リロードを引き起こす link.html ページに直行する傾向があります。

戻るボタンを押すと ajax 部分が機能し、そこからリンクをクリックすると機能します - ページが最初に表示されたときにこの動作を引き起こしている原因は何ですか?

jQuery UI のナビゲーター メニューを使用しています。さらに情報が必要な場合はお知らせください。できるだけ早く投稿します。

助けてくれてありがとう!

ajax の動作を制御する dynamic.js ファイルは次のとおりです。

$(function() {

    var newHash      = "",
        $mainContent = $("#main-content"),
        $pageWrap    = $("#page-wrap"),
        baseHeight   = 0,
        $el;

    $pageWrap.height($pageWrap.height());
    baseHeight = $pageWrap.height() - $mainContent.height();

    $("nav").delegate("a", "click", function() {
        window.location.hash = $(this).attr("href");
        return false;
    });

    $(window).bind('hashchange', function(){

        newHash = window.location.hash.substring(1);

        if (newHash) {
            $mainContent
                .find("#guts")
                .fadeOut(200, function() {
                    $mainContent.hide().load(newHash + " #guts", function() {
                        $mainContent.fadeIn(200, function() {
                            $pageWrap.animate({
                                height: baseHeight + $mainContent.height() + "px"
                            });
                        });
                        $("nav a").removeClass("current");
                        $("nav a[href='"+newHash+"']").addClass("current");
                    });
                });
        };

    });

    $(window).trigger('hashchange');

});
4

2 に答える 2

1

ページのソースを見ると、これを行うコードがあります。

$( "#menu" ).menu({

});

その中には、次のものがあります。

location.href = link.attr( "href" );

hashchangeこれはあなたの処理に加えてそれを実行しているので、それが呼び出され、(何らかの方法で) AJAX の読み込みをオーバーライドしているように感じます。行を削除/コメントするとうまくいくかもしれませんが、この変更を行った後もサイトが希望どおりに機能していることを確認してください.

于 2012-10-31T21:01:45.693 に答える
1

クリックイベントをリンクに割り当てるときに preventDefault() を使用してみましたか?

$("nav").delegate("a", "click", function(e) {
        e.preventDefault();
        window.location.hash = $(this).attr("href");
        return false;
    });

return false は仕事をするべきですが、念のため

于 2012-10-31T20:48:48.687 に答える