0

これが機能しない理由に関するアイデア。私はCSSのチュートリアルを使用しています-AJAXを使用してページを動的にロードするためのトリック。これは、ページが正常に読み込まれる原因となるいくつかのページにセカンダリナビゲーションを導入するまでは正常に機能します。

これは私が使用しているコードです。クラスを使用して、さまざまなナビゲーション領域のスタイルを設定しています。

$(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');

});

ウェブサイト: http: //darynjohnson.com/Medical%20Futures/about.php

4

1 に答える 1

0

これらの新しく作成されたリンクには、変更されていないオブジェクトに遅延関数を設定するため、イベントがバインドされていません。同じタグ(ここでは「nav」)で新しく追加されたオブジェクトは、遅延を取得しません。

使用する:

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

また、jQueryを最新バージョンにアップグレードし、delegate()をon()に置き換えることをお勧めします

于 2012-09-02T22:09:10.197 に答える