2012-04-01 2 views
1

Könnte mir jemand sagen, warum dieser Code nicht die Datenantwort aktualisiert? Es ist ein einfaches Beispiel der jede Funktion. HierÄndern Sie eine AJAX HTML-Antwort mit jeder Funktion

ist die Ajax-HTML-Datei angefordert:

<html> 
<div class="new"> 
    <div class="span4"> 
     <h2>Heading1</h2> 
     <p>Text1</p> 
     <p><a href="#">Link1</a></p> 
    </div> 
    <div class="span4"> 
     <h2>Heading2</h2> 
     <p>Text2</p> 
     <p><a href="#">Link2</a></p> 
    </div> 
</div> 
</html> 

und hier ist die Hauptdatei Körper:

<!DOCTYPE html> 
<body> 
<textarea id="gethtml" rows="40" cols="125"></textarea> 

<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
<script> 
    "use strict"; 
    $(function() { 

     $.get('file.html', function(data) { 
      ajaxfunction(data); 
     }); 

     function ajaxfunction(data) { 
      $(data).find(".span4").each(function() { 
       $(this).find("p").eq(0).text("Hello"); 
       $(this).find("p").eq(0).after("<p>newline</p>"); 
       console.log($(this)); 
      }); 
      $("#gethtml").val(data); 
     } 

    }); 
</script> 
</body> 
</html> 

Sie können sehen, dass die Konsole die richtigen Daten für jeden span4 zeigt, aber warum Wird die Zeichenfolge "data" nicht aktualisiert, um die Änderungen zu berücksichtigen?

EDIT

function ajaxfunction(data) { 
      var tree = $("<div>" + data + "</div>"); 
      $(tree).find(".span4").each(function() { 
       $(this).find("p").eq(0).text("Hello"); 
       $(this).find("p").eq(0).after("<p>newline</p>"); 
       console.log($(this)); 
      }); 
      $("#gethtml").val(tree.html()); 
} 

Diese Orte in das Textfeld, das heißt <p>Hello</p><p>newline</p>. Also, um auch eine neue Zeile einzufügen, muss ich es als String ändern, oder?

Danke!

+0

'tree' ist bereits ein jQuery-Objekt. Rufen Sie '$()' nicht darauf auf. – SLaks

Antwort

2

data ist eine Zeichenfolge.

Ihr each Code analysiert diese Zeichenfolge in einer DOM-Struktur und ändert sie.
Sie tun jedoch nichts mit diesem DOM-Baum.

Ihr val() Aufruf verwendet die ursprüngliche Zeichenfolge erneut.

Stattdessen müssen Sie html() aufrufen, um die Quelle des geänderten DOM-Baums zu erhalten.

Weitere Informationen finden Sie unter my blog post.

+0

danke! Ich habe die Frage für diesen Beitrag aktualisiert. – user1306663

+0

Aktualisierter Post :) – user1306663