2010-10-22 4 views
14

Ich habe eine WordPress-Installation und ich versuche mit jQuery einen Load More-Effekt zu erstellen. Ich habe Probleme mit der grundlegenden .load-Funktion für Seitenfragmente. Es macht mir nichts aus, .get zu verwenden, da ich hier einige Threads als bessere Lösung gesehen habe.Kann jQuery .load anhängen statt ersetzen?

Hier ist meine Seite URL-Struktur und der Inhalt:

Erste Seite: http://example.com/page/1/

Die HTML:

<div id="articles"> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
</div> 

Zweite Seite: http://example.com/page/2/

Die HTML:

<div id="articles"> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
</div> 

Ich habe einen Link am Ende der Seite und ich habe folgendes versucht zu tun:

jQuery(#articles).load('http://example.com/page/2/ #articles'); 

Leider gibt es zwei Probleme. Zuerst nimmt die .load-Funktion die #articles div und ihren Inhalt von der zweiten Seite und legt sie in den vorhandenen #articles div. Das heißt, selbst wenn dies funktionieren würde, würde es rekursive divs in divs geben, die sich aus jedem Klick ergeben. Es ist nur unordentlich.

Könnte mir jemand mit dem Befehl helfen, einfach die .story classes von der zweiten Seite in die #articles div auf der ersten Seite anzuhängen? Ich kann die Logistik der Automatisierung mit Variablen, Schleifen und PHP für WordPress danach herausfinden. Brauchen Sie einfach Unterstützung mit dem richtigen jQuery-Skript.

P.S. Bonusfrage: Wenn jemand weiß, ob jQuery .load/.get Seitenzugriffe schädigt, was für diejenigen mit werbebasiertem Umsatz wichtig ist, lass es mich wissen! Wenn jeder .load/.get als weiterer Hit für Google Analytics zählt, sind wir gut!

Danke!

+0

Ich glaube nicht, dass $ .load() Google Analytics auswirken wird. Damit Google einen Seitenaufruf registrieren kann, muss die aktuelle Seite so geladen werden, dass Google Analytics JavaScript ausgeführt wird. Das Google JavaScript wird ausgeführt, wenn eine Seite in ein Browserfenster geladen wird, aber nicht, wenn Sie nur den Inhalt der Datei abrufen, wie Sie es mit $ .load() tun. – quakkels

Antwort

32

Sie können nicht anhängen Inhalt der jQuery.load() Methode verwendet, aber Sie können tun, was Sie wollen jQuery.get() mit:

$.get('/page/2/', function(data){ 
    $(data).find("#articles .story").appendTo("#articles"); 
}); 
+0

Gabriel, danke! Ihr Code war sehr einfach zu verstehen und funktionierte auf Anhieb.Ich verwende Ihren Code zusammen mit Znarkus 'Konzept für den Import von Containern, um an die richtige Stelle zu springen. Nur um herauszufinden, wie man Links temporär umschreibt, wäre jede Hilfe großartig. Das Problem wird oben in Znarkus 'Kommentar beschrieben. –

+0

Wenn Sie den geladenen Inhalt filtern möchten, erledigt get() den Job nicht. $ .load ('/ Seite/2/.posts'); zum Beispiel – keinabel

+0

Ich hatte gerade ein ähnliches Problem, und das scheint zu arbeiten, aber gibt mir ein leeres Objekt, wenn ich es auf der Konsole für das Debugging anmelden. Nichts kommt auch auf die Seite. :( – maxxon15

4

ich wahrscheinlich das es wie tun würde.

$('#articles').append($('<div/>', { id: '#articles-page2' }); 
$('#articles-page2').load('http://example.com/page/2/ #articles > *'); 

#articles > * holt alle unmittelbaren Kinder #article.

+0

Hey Znarkus, könntest du den Code noch ein bisschen genauer erklären? Muss ich die PHP generieren DIVs mit dem Namen '# articles-page2',' # articles-page3', etc.? –

+0

Ja. Das würde es auch schaffen es ist einfacher, die Seiten zu trennen, was für die korrekte Handhabung des Verlaufs nützlich ist (Benutzer drückt die Zurück-Taste im Browser) Sie könnten dann einfach die Seite http: // example.com/page # articles-page3 laden und der Browser würde nach unten scrollen zu diesem Ergebnis Set – Znarkus

+0

Ich habe es mit Ihrer Idee und den Code von Gabriel unten! Eine weitere Frage leicht verwandt. Ich habe 'Load More' Ich benutze .attr, um den Wert des Links zu lesen, um die nächste Seite zu greifen für '.load'. Ich will immer noch, dass es ein Link für den Fall ist, dass JS deaktiviert/nicht funktioniert/SEO. Aber wie kann ich jQuery neu schreiben, um zum' # articles-page2' DIV zu scrollen, das inline für generiert würde Beispiel? Danke nochmal! –

2

Zum Anhängen von Daten, glaube ich nicht, dass Sie $ .load() verwenden möchten. Stattdessen sollten Sie sich mit $ .ajax() befassen.

$.ajax({ 
    url: 'yourlocation/test.html', 
    success: function(data) { 
    $('.result').html(data); 
    $("#yourdiv").append(data); 
    } 
}); 
2

Versuchen Sie es, es funktionierte für mich.

$('#articles').append($('<div/>').load('http://example.com/page/2/ #articles'));