2

したがって、この関数を使用して追加されるメニューがあります。

function loadContent() { 
    $(".navbar").load("navigation.html"); 
} 

Navigation.htmlは次のようになります。

<ul>
    <li><a href="home.html" class="first">Home</a></li>
    <li><a href="calendar.html">Calendar</a></li>
    <li><a href="profile.html">Profile</a></li>
    <li><a href="charts.html" class="last">Energy Charts</a></li>
</ul>

しかし、そのメニューで何かを選択してクラスを追加しようとすると、次のようになります。

$('.navbar a').addClass('activeState');

Chromeでは動作しません。DOMを更新する必要があるので、本当にわかりません...

4

4 に答える 4

4

コンテンツが実際に読み込まれるまで待つ必要があります。コードをloadコールバック関数に入れます。

function loadContent() { 
    $(".navbar").load("navigation.html", function () {
        $('.navbar a').addClass('activeState');
    }); 
}

@LifeInTheGreyが指摘しているように、パフォーマンスを向上させるには、別の関数を使用する必要があります。

function loadContent() { 
    $(".navbar").load("navigation.html", actOnContent); 
}

function actOnContent () {
    $('.navbar a').addClass('activeState');
}

セレクターのキャッシュも調べる必要があります...

于 2013-01-30T20:41:27.860 に答える
1

AJAXでロードされたコンテンツに依存するコードは、上記のAJAXリクエストの成功ハンドラーに配置する必要があります。の場合.load()、それは3番目の引数です。

$(".navbar").load("navigation.html",null,function() {
    $(".navbar a").addClass("activeState");
});
于 2013-01-30T20:42:22.010 に答える
0

ドキュメント準備機能でこれを試してください:

$('.navbar').delegate('a', 'click', function() { 
  $(this).addClass('activeState');
});
于 2013-01-30T20:50:42.780 に答える
0

これを試して

function loadContent() { 
    $(".navbar").load("navigation.html", addAttribute); 
}

function addAttribute() {
    $('.navbar a').addClass('activeState');
}
于 2013-01-30T20:52:18.590 に答える