2012-04-03 9 views
1

Im Moment versuche ich ein Setup zu erstellen, bei dem der Seiteninhalt in den Hauptbereich geladen wird, um zu vermeiden, dass die Seite für jeden Link aktualisiert werden muss.Dynamisch geladene Inhalte mit jQuery laden löscht den vorhandenen html

Ich verwende jQuery laden wie folgt für jeden Link, der angeklickt wird, so dass der Link in die #main geladen wird. (Offensichtlich ist es nicht alle Links, wenn Sie fertig sind.)

Seiten besucht direkt funktionieren gut, aber wenn Sie versuchen, diese Ladung Link zu verwenden, dann wird es den Inhalt korrekt laden, aber zeigt nur die geladene HTML in Sicht Quelle, Mache ich hier etwas falsch?

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

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

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

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

    }); 

    return false 
}); 
+1

Haben Sie nur die Frage bearbeitet, oder versuchen Sie es sogar? Ich habe das Gefühl, dass Sie gerade die Frage "repariert" haben ... – gdoron

+0

Ja, das half, war ein Problem, das ich nicht entdeckt hatte! Die eigentliche Ursache für das oben genannte waren Skript-Tags in der Include-Datei .php, vergiss immer, dass du das nicht tun kannst! – Dan

+0

Ist die Frage der Text fett? Sie sagen, dass es richtig geladen wird, aber Quelle anzeigen keine Änderungen anzeigen? Das ist das erwartete Verhalten als Ansichtsquelle bei Ladezeit. Verwenden Sie firebug oder andere, um geänderten Inhalt anzuzeigen – Steen

Antwort

2

Das Problem, das dieses Problem mit .load() verursacht, ist, wenn die Datei, die Sie einschließen, <script></script> Tags enthält.

Diese stören das Javascript und es kann nicht mit der Seite zu Fehler führen.

Um das Problem zu beheben, müssen Sie die <script></script> Tags aus der geladenen Datei entfernen.

1

Sie verblasste die Haupt-out, und es nicht wieder verblassen ...
Verwenden Sie diese:

$("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 innerhalb der Rückruf nicht das DOM-Element ist !!!

+0

@ Silver89. '$ (this)' ist NICHT das dom-Element! es ist das Ajax-Objekt. – gdoron

Verwandte Themen