2012-04-03 14 views
1

現在、すべてのリンクのページを更新する必要がないように、メインページ内にページコンテンツが読み込まれる設定を作成しようとしています。jQuery loadで動的にロードされたコンテンツは、既存のhtmlをクリアします

リンクが#mainにロードされるようにクリックされたすべてのリンクに対して、次のようにjQuery loadを使用しています。 (完了時に明らかにそれはすべてのリンクではありません。)

ページが正しくなく、のみ表示ソースにロードされたHTMLを示し、直接訪問した細かい動作しますが、あなたがしようとすると、この負荷のリンクを使用している場合、それはコンテンツをロードします、私はここで何か間違っているのですか?

$("body").on("click", "a", function(){ 

    $("#footer, #main").fadeOut('fast'); 

    $("#main").load($(this).attr("href"), function(){ 

     $("#main, #footer").fadeIn('slow'); 

    }); 

    return false 
}); 
+1

質問を編集するだけでしたか、それとも試してみましたか?私はあなたがちょうど質問を "固定"していると感じている... – gdoron

+0

はい、助けられた、私が見つけなかった問題だった!上記の実際の原因は、インクルード.phpファイル内のスクリプトタグであり、あなたはそれを行うことができないことを常に忘れています! – Dan

+0

質問に太字のテキストがありますか?あなたはそれが正しくロードされていると言っていますが、ソースの表示に変更が見られません。これは、ビューソースがロード時に予想される動作です。変更されたコンテンツを表示するためにfirebugなどを使用します。 – Steen

答えて

2

​​でこの問題が発生する問題は、含まれているファイルに<script></script>タグが含まれている場合です。

これらはJavascriptに干渉し、ページのエラーを引き起こすことに対処できません。

ロードするファイル内から<script></script>タグを削除する必要があります。

1

あなたがメインをフェードアウトし、再びそれをフェードしませんでした...この
使用:

$("body").on("click", "a", function(){  
    $("#footer, #main").fadeOut('fast');  
    $("#main").load($(this).attr("href"), function(){  
     $("#main").fadeIn('slow'); // <====================== 
     //$(this).fadeIn('slow'); this isn't the main object! 
     $("#footer").fadeIn('slow');  
    });  

    return false 
}); 

thisコールバックの内側には、DOM要素ではありません!

+0

@ Silver89。 '$(this)'はdom要素ではありません!それはajaxオブジェクトです。 – gdoron

関連する問題