2

編集:

了解しました。これを解決するために、例をオンラインで公開しました:http:
//lodge323.com/test/index.html

この例は意図したとおりに機能しますが、必要なコンテンツが含まれていません。これは明らかにFF13でのみ発生し、IE9では発生しないことに注意してください。

問題を再現する手順:
-Ctrl + F5を押してページをリロードします(キャッシュを上書きします)。
-Firebug(FFのアドオン)を使用して、1.jpgを
head.gifに変更します。-右側の[インベントリ]メニュータブをクリックします。

1.jpgを使用した場合には発生しない、メニューと下部の間にギャップがあることに注意してください。質問は、どうすればそのgif画像をページで正しく機能させることができるかということです。

4

1 に答える 1

3

jQueryのロードは非同期です。

loadContentの後にloadSidebarを呼び出す代わりに、loadへのコールバックとしてそれを渡します:

$(document).ready(function() {
    $(".tabs a").click(function() {
        loadContent('#ContentDiv', this, '.tabs a', 'id', loadSidebar);
    });
});

function loadContent(divTarget, elm, selector, attr, callback) {
    $(divTarget).load($(elm).attr(attr) + ' #ContentLoad', callback);
}

これにより、コンテンツの読み込みが開始された直後ではなく、コンテンツの読み込みが終了したときにloadSidebarが呼び出されます。

Javascriptのコールバック関数についてをご覧ください。コールバックが必要な理由を理解するのに役立つ場合があります。

編集

エリックが指摘したように、あなたはURLもIDに保存しているというコメントです。href代わりに、アンカーの属性に格納する必要があります。次に、クリックハンドラからfalseを返すだけで、ページ全体が読み込まれないようにすることができます。

$(document).ready(function() {
    $(".tabs a").click(function() {
        loadContent('#ContentDiv', this, '.tabs a', 'href', loadSidebar);
        return false;
    });
});
于 2012-06-07T16:30:24.770 に答える