Der jQuery-Selektor gibt prevObject anstelle des normalen Elements zurück

Lesezeit: 4 Minuten

Benutzer-Avatar
Jacob

Ich habe einige Probleme mit der Auswahl von Elementen mit Jquery. Wenn ich versuche, ein Element auszuwählen:

var images = $("#htmlChunk").find("img.Thumb");
console.log(images);

Ich bekomme dieses Ergebnis:

>[<img>, <img>, prevObject: e.fn.e.init[1], context: #document, selector: "#htmlChunk img.Thumb"]

Was verursacht dieses zurückgegebene Ergebnis? Ich habe einiges ausprobiert, bekomme aber immer noch nicht das gewünschte Ergebnis.

Ich habe versucht, den Code zu umbrechen, um Konflikte zu vermeiden. Ich habe versucht, das Objekt zu löschen

Das war etwas, was ich im Internet gefunden habe.
http://drupal.org/node/272557

var images = $("#htmlChunk")['prevObject'].find("img.Thumb");

Ich bekomme jetzt ein Objekt zurück, aber das ist auch nicht das, was ich wollte.

Ich bin in dieses Projekt gesprungen, also bin ich mit dem Drehbuch nicht bekannt. Ich habe versucht, in den js-Dateien nach prevObject zu suchen, konnte aber keine finden.

Ich denke, das Problem ist, dass es eine andere Javascript-Datei stört. irgendwelche Ideen? Richtungen?

Bearbeiten: htmlChunk:

<div id="htmlChunk">
    <div class="ngg-albumoverview">
        <div class="ngg-album-compact">
            <div class="ngg-album-compactbox">
                <div class="ngg-album-link">
                    <a class="Link" href="http://........">
                        <img class="Thumb" alt="Personeelsevent" src="http://.........">
                    </a>
                </div>
            </div>
            <h4><a class="ngg-album-desc" title="Personeelsevent" href="http://.....">Personeelsevent</a></h4>
            <p><a href="http:///.......">bekijk dit album</a></p>
        </div>
    </div>
</div>

  • Das Ergebnis, das Sie sehen, sind die Eigenschaften des zurückgegebenen jQuery-Objekts. Ohne ein Beispiel Ihres HTML-Codes ist es unmöglich, Ihnen weiter zu helfen.

    – Fabrício Matté

    9. November 2012 um 11:06 Uhr

  • Verwenden Sie einfach ‘.get()’ nach ‘find’, und Sie haben ein Array von Objekten. Beispiel $(parent).find(‘iframe[src*=”vimeo.com”]’).erhalten();

    – Oleg Borodko

    23. Juli um 19:18 Uhr


Benutzer-Avatar
Anton Grist

Dein images Variable ist ein jQuery-Objekt, was Sie also in der Konsole Ihres Browsers sehen, scheint dieses Objekt zu sein. Die spezifische Ausgabe legt nahe, dass der Aufruf an .find() stimmt nicht wirklich mit irgendwelchen Elementen überein; Vergleichen Sie die beiden Konsolenausgaben aus diese jsFiddle (in Chrome).

Wenn Sie eine jQuery-Funktion aufrufen – wie z .find(), .filter()usw. – das die Liste der übereinstimmenden Elemente in einem vorhandenen jQuery-Objekt eingrenzt oder ändert, enthält das resultierende jQuery-Objekt auch einen Verweis auf den Zustand vor der Ausführung dieser Funktion, was Sie sehen prevObject. Dies ist, was es verwendet, um zurückzukehren, wenn Sie die aufrufen .end() Funktion.

Lassen Sie uns Ihren Code aufschlüsseln:

var images = $(".htmlChunk").find("img.Thumb");

Der erste Teil – $(".htmlChunk") – stimmt mit allen Elementen überein, die die Klasse haben htmlChunk auf ihnen und gibt ein jQuery-Objekt zurück, das diese Elemente enthält.

Dann rufst du an .find("img.Thumb") das nach allen Elementen sucht, die Nachkommen der bereits übereinstimmenden Elemente sind (die mit der Klasse htmlChunk), die die Kriterien erfüllen, ein zu sein <img> Element und mit der Klasse Thumb auf sie.

Sie könnten einen einzigen Selektor verwenden, um die Elemente abzurufen, was zu besseren Ergebnissen führen könnte:

var images = $(".htmlChunk img.Thumb");

Wenn Sie anstelle eines jQuery-Objekts, das sie enthält, ein Array der tatsächlichen DOM-Elemente wünschen, können Sie die verwenden .get() Funktion:

var elementArray = images.get();

So adressieren Sie die Bearbeitung der Frage, um den HTML-Code einzuschließen:

Sie verwenden $(".htmlChunk") um das Anfangselement zu erhalten. Allerdings das <div> Element hat ein ICH WÜRDEkeine Klasse, von htmlChunk damit der Code das benötigte Element nicht auswählt. Sie möchten Folgendes verwenden:

var images = $("#htmlChunk").find("img.Thumb");

Beachten Sie das # eher als das . im Selektor.

  • Ich habe das Ergebnis jetzt tatsächlich bekommen, wegen der ID (dummer Fehler, mein Fehler), aber ich weiß immer noch nicht, woher das prevObject kommt und warum? Normalerweise erhalten Sie die DOM-Elemente in einem Array, noch nie zuvor gesehen, dass es ein seltsames Objekt zurückgibt. Nur zur Verdeutlichung, wie Sie dieses Objekt zum Beispiel loswerden

    – Jacob

    9. November 2012 um 12:39 Uhr


  • oder vielleicht sieht es anders aus, weil der Chrome-Browser in letzter Zeit aktualisiert wurde und die Konsole jetzt mehr Informationen anzeigt als zuvor, also bin ich vielleicht verwirrt

    – Jacob

    9. November 2012 um 13:10 Uhr

Es sieht so aus, als ob Sie versuchen, die Klasse “.htmlChunk” auszuwählen, aber nicht existiert. Versuchen Sie stattdessen, nach ID auszuwählen.

var images = $("#htmlChunk").find("img.Thumb");

Versuche dies.

   function getId() {
             var ids = $(".htmlChunk").find("img.thumb"); //it wiill return array of image
             var sid = $(".htmlChunk").find("img#img2"); //it wiill return wat image you want
             $(".htmlChunk span").text("arrays:" + ids[0] + "  :  " + ids[1] +
             "simple imge:" + sid);
         }


    <input id="Button1" type="button" value="button" onclick= "getId();"/>


  <div class="htmlChunk">
        <img alt="" src="https://stackoverflow.com/questions/13306832/img/Desert.jpg" class="thumb" id="img1" />
       <img alt="" src="img/Chrysanthemum.jpg" class="thumb" id="img2" />
        <span></span>
   </div>

ist prevObject nicht nur eine Eigenschaft des Ergebnisses?

Sie könnten es verstehen als “das Ergebnis hat das folgende prevObject ->”

1225570cookie-checkDer jQuery-Selektor gibt prevObject anstelle des normalen Elements zurück

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy