Ich möchte page.html, um den Inhalt von side.html anzufragen und den Inhalt von zwei seiner divs zu extrahieren. Aber ich kann trotz allem, was ich versucht habe, nicht die richtige Antwort finden.
Hier ist side.html:
%Vor%und hier ist page.html
%Vor%Wenn ich auf diese Seite zugreife, erhalte ich keinen Fehler, und die drei alert () s ergeben undefined, undefined und [object Object]. Was mache ich falsch? Beispiel ist live hier .
Sie müssen diese Zeile ändern:
%Vor%Dazu:
%Vor%Und eigentlich solltest du das besser als lokale Variable deklarieren:
%Vor%Erläuterung
Wenn Sie jQuery(result)
ausführen, zieht jQuery die untergeordneten Elemente des Elements <body>
zurück und gibt einen Wrapper um diese Elemente zurück, anstatt einen jQuery-Wrapper für das Element <html>
zurückzugeben, was meiner Meinung nach hübsch wäre dumm.
In Ihrem Fall enthält <body>
von sidebar.html mehrere Elemente und einige Textknoten. Daher ist das zurückgegebene jQuery-Objekt ein Wrapper für diese verschiedenen Elemente und Textknoten.
Wenn Sie .find()
verwenden, durchsucht es die Nachkommen der Elemente, die von dem jQuery-Objekt umschlossen sind, das Sie aufgerufen haben. In Ihrem Fall ist die <div id="a">
nicht eine davon, weil sie tatsächlich eine der ausgewählten Elemente des Wrappers ist und kein eigener Nachkomme sein kann.
Indem Sie es in ein eigenes <div>
einbetten, schieben Sie diese Elemente "nach unten" auf ein Level. Wenn Sie oben in meinem Fixcode .find()
aufrufen, sucht er nach Nachkommen dieses <div>
und findet daher Ihr <div id="a">
.
Kommentar
Wenn Ihr <div id="a">
nicht auf der obersten Ebene war, d. h. ein direktes Kind von <body>
, dann hätte Ihr Code funktioniert. Für mich ist das inkonsistentes und daher falsches Verhalten. Um dies zu lösen, sollte jQuery den Container <div>
für Sie generieren, wenn er seine <body>
Inhaltsextraktions-Magie bearbeitet.
Tags und Links javascript jquery ajax