jQuery verwenden .load() zum Anhängen von Daten nicht ersetzen
wie kann ich über die Funktionalität von load()
außer ich möchte zum Anhängen von Daten nicht ersetzen. vielleicht kann ich get()
anstelle, aber ich will nur extrahieren Sie die #posts
element aus der geladenen Daten
UPDATE
wenn ich einen alert(data)
ich bekommen ...
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="jquery.infinitescroll.js"></script>
<script>
</script>
</head>
<body>
<div id="info"></div>
<div id="posts">
<div class="post"> ... </div>
...
<ul id="pageNav" class="clearfix">
<li><a href="page1.html">1</a></li>
<li><a href="page2.html">2</a></li>
<li><a href="page3.html">3</a></li>
<li><a href="page4.html">4</a></li>
<li><a href="page5.html">5</a></li>
<li><a href="page3.html" class="next">next</a></li>
</ul>
den vollständigen code können gefunden werden @ pastebin
InformationsquelleAutor Jiew Meng | 2010-07-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt keinen Grund können Sie nicht herausziehen, das element, das Sie möchten, verwenden
$.get()
.EDIT:
Du vielleicht nicht bemerkt, die Kommentare im code oben, so werde ich, um es explizit hier.
Wenn die
#posts
element ist an der Spitze der Hierarchie indata
, in anderen Worten, wenn Sie nicht über ein übergeordnetes element, die Sie verwenden müssen.filter()
statt.EDIT:
Basierend auf den Kommentaren unten, man braucht wohl
.filter()
statt.find()
.Der Grund dafür ist, dass Sie vorbei sind in eine komplette HTML-Struktur. Wenn Sie das tun, jQuery Orte, die direkte Kinder des
body
tag, wie das array in der jQuery-Objekt.jQuery
.filter()
Filter nur gegen die Knoten im array. Nicht Ihre Kinder.jQuery
.find()
sucht unter den Nachkommen der Knoten im array.Weil dieser, Sie sind zu brauchen, beide zu verwenden.
.filter()
zu Holen Sie sich die richtigen an der Spitze (#posts
) und.find()
um die korrekte Nachfahren (.next
).Dieser verengt sich der Satz nur der
#posts
element, dann findet die.next
element, das ein Nachfahre.$('#container').append($('#posts', data));
--- Nicht, dass dein Beispiel funktioniert, aber hüten Sie sich vor dem aufrufen$(data)
/$('#posts',data)
mehrere Male in diesem Rückruf! Das könnte möglicherweise eine ganze Menge unnötige Verarbeitung/Speicher...Eigentlich
$("#posts", data).appendTo("#container");
wäre weniger verschwenderisch 🙂nur die Kosten der Lesbarkeit 🙂
Nicht jQuery-nur drehen Sie Sie um in eine
.append()
? github.com/jquery/jquery/blob/1.4.2/src/manipulation.js#L445Haben Sie bemerkt, dass mein code-Kommentar über die Verwendung
.filter()
? Wenn das element, das Sie wollen, ist auf der obersten Ebene, d.h. es muss nicht ein übergeordnetes element indata
, benötigen Sie.filter()
statt.find()
. Ich werde aktualisieren, meine Antwort zu machen, mehr klar.InformationsquelleAutor user113716
Anhängen mit load:
Diese angefügt werden, was auch immer Sie laden in der #Posts element.
InformationsquelleAutor Kirill Fuchs
InformationsquelleAutor Josh Stodola
versuchen, verwenden Sie $(this), so etwas wie :
document
mit dieser Seite...Sie weiß wirklich nicht wollen, etwas zu tun, wie diese, braucht er etwas anderes als.load()
in diesem Fall.InformationsquelleAutor Puaka