2012-11-09 27 views
31

Ho alcuni problemi con la selezione degli elementi, con Jquery. Quando provo a selezionare un elemento:jQuery selector restituisce prevObject invece dell'elemento normale

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

ottengo questo risultato:

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

che cosa sta causando questo risultato restituito? Ho provato alcune cose ma ancora non ottengo il risultato che volevo.

Ho provato a racchiudere il codice per evitare conflitti. ho provato a cancellare l'oggetto

Questo è stato qualcosa che ho trovato sul web. http://drupal.org/node/272557

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

vengo tornato un oggetto ormai, ma questo è, inoltre, non quello che volevo.

Sono saltato in questo progetto, quindi non sono ben noto con la sceneggiatura. ho provato a cercare prevObject nei file js ma non sono riuscito a trovarne.

Penso che il problema sia che interferisce con qualche altro file javascript. qualche idea? indicazioni?

Edit: 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> 
+0

Il risultato che stai vedendo è la proprietà dell'oggetto jQuery restituito. Senza un campione del tuo codice HTML, è impossibile aiutarti ulteriormente. –

risposta

41

La variabile images è un oggetto jQuery, quindi quello che stai vedendo in uscita nella console del browser sembra essere quell'oggetto. L'output specifico suggerisce che la chiamata a .find() non corrisponda effettivamente a nessun elemento; confronta le due uscite della console da this jsFiddle (in Chrome).

Quando si chiama una funzione di jQuery - come .find(), .filter(), ecc - che restringe verso il basso, o modifiche, l'elenco degli elementi corrispondenti su una esistente jQuery oggetto l'oggetto jQuery risultante contiene anche un riferimento allo stato prima di quella funzione è stato eseguito, che è quello che stai vedendo come prevObject. Questo è ciò che utilizza per tornare indietro quando si chiama la funzione .end().

Analizziamo il codice:

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

La prima parte - $(".htmlChunk") - corrisponde a tutti gli elementi che hanno la classe htmlChunk su di loro, e restituisce un oggetto jQuery che contiene quegli elementi.

quindi si chiama .find("img.Thumb") che sembra per tutti gli elementi che sono discendenti degli elementi già abbinati (quelli con la classe htmlChunk) che soddisfano i criteri di essere un elemento <img> e avere la classe Thumb su di loro.

È possibile utilizzare un singolo selettore per recuperare gli elementi, che potrebbero dare risultati migliori:

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

Se si desidera un array di elementi DOM attuali, piuttosto che un oggetto jQuery che li contiene, è possibile utilizzare la funzione .get():

var elementArray = images.get(); 

per affrontare la modifica alla domanda di includere il codice HTML:

Si sta utilizzando $(".htmlChunk") per ottenere l'elemento iniziale. Tuttavia, l'elemento <div> ha un ID , non una classe, di htmlChunk in modo che il codice non selezioni l'elemento necessario. Ti consigliamo di utilizzare il seguente:

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

Annotare il # piuttosto che il . nel selettore.

+0

Ora ho ottenuto il risultato, a causa dell'ID (errore stupido mio), ma non so ancora da dove viene questo prevObject e perché? normalmente ottieni gli elementi DOM in un array, mai visto prima che restituisca un oggetto strano. solo per chiarire le cose come fai a liberarti di questo oggetto, ad esempio – Jacob

+1

o maby, sembra diverso perché Chrome aggiorna il browser ultimamente e la console mostra più informazioni ora poi ha fatto prima così è per questo che sono confuso – Jacob

3

Sembra che tu stia cercando di selezionare la classe ".htmlChunk", ma non esiste. Prova invece a selezionare per ID.

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

aahh .. stupido errore probabilmente perché è venerdì;) – Jacob

-1

provare questo.

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="img/Desert.jpg" class="thumb" id="img1" /> 
     <img alt="" src="img/Chrysanthemum.jpg" class="thumb" id="img2" /> 
     <span></span> 
    </div> 
-2

non è prevObject solo una proprietà del risultato?

si poteva capire come "il risultato è il seguente prevObject ->"

Problemi correlati