2012-11-09 19 views
31

Mam pewne problemy z zaznaczaniem elementów, z Jquery. Kiedy próbuję wybrać element:jQuery selector zwraca prevObject zamiast normalnego elementu

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

i ten wynik:

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

Co jest przyczyną tego zwrócony wynik? Próbowałem pewnych rzeczy, ale nadal nie mogę uzyskać pożądanego rezultatu.

Próbowałem owinąć kod, aby uniknąć konfliktu. Próbowałem wyczyścić obiekt

To było coś, co znalazłem w Internecie. http://drupal.org/node/272557

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

I get zwrócony obiekt teraz, ale to też nie to, co chciałem.

Wskoczyłem w ten projekt, więc nie jestem dobrze znany ze scenariusza. Próbowałem wyszukać prevObject w plikach js, ale nie mogłem go znaleźć.

Myślę, że problem polega na tym, że zakłóca to inny plik javascript. jakieś pomysły? kierunki?

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

Wynik widzisz to właściwości zwróconego obiektu jQuery. Bez próbki kodu HTML dalsza pomoc jest niemożliwa. –

Odpowiedz

41

zmiennej images jest obiektem jQuery, więc co masz wyjścia w konsoli przeglądarki widzenia wydaje się, że obiekt. Konkretne dane wyjściowe sugerują, że wywołanie .find() nie odpowiada faktycznie żadnym elementom; porównaj dwa wyjścia konsoli od this jsFiddle (w Chrome).

Po wywołaniu funkcji jQuery - takiej jak .find(), .filter() itd. - która zawęża lub zmienia listę dopasowanych elementów w istniejącym obiekcie jQuery, wynikowy obiekt jQuery zawiera także odniesienie do stanu przed tą funkcją został uruchomiony, co widzisz jako prevObject. To jest to, czego używa do przywrócenia, gdy zadzwonisz do funkcji .end().

Złammy swój kod:

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

Pierwsza część - $(".htmlChunk") - pasuje do wszystkich elementów, które mają klasę htmlChunk na nich, i zwraca obiekt jQuery zawierający te elementy.

Następnie zadzwonić .find("img.Thumb") który wygląda dla wszystkich elementów, które są potomkami już dopasowanych elementów (tych z klasy htmlChunk), które spełniają kryteria bycia elementem <img> i posiadające klasę Thumb na nich.

Można używać jednego selektora odzyskać elementy, które może dać lepsze rezultaty:

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

Jeśli chcesz tablicę rzeczywistych elementów DOM, zamiast obiektu jQuery je zawierające, można użyj .get() funkcję:

var elementArray = images.get(); 

do zajęcia się zmienił na pytanie zawierać kod HTML:

Używasz $(".htmlChunk"), aby uzyskać początkowy element. Jednak ten element <div> ma ID, a nie klasę, z htmlChunk, więc kod nie wybierze elementu, którego potrzebujesz. Będziemy chcieli, aby użyć następujących:

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

Zanotować # zamiast . w selektorze.

+0

Teraz otrzymałem wynik z powodu ID (głupi błąd mój zły), ale nadal nie wiem skąd pochodzi prevObject i dlaczego? zwykle dostajesz elementy DOM w tablicy, nigdy wcześniej tego nie widziałem, ponieważ zwraca on dziwny obiekt. tylko po to, aby wyjaśnić, w jaki sposób pozbyć się tego obiektu, na przykład – Jacob

+1

lub maby wygląda inaczej, ponieważ Chrome aktualizuje tam ostatnio przeglądarkę, a konsola pokazuje więcej informacji teraz to zrobiła wcześniej, więc ms, dlaczego jestem zdezorientowana – Jacob

3

Wygląda na to, że próbujesz wybrać klasę ".htmlChunk", ale ona nie istnieje. Spróbuj wybrać zamiast tego id.

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

aahh .. głupi błąd prawdopodobnie dlatego, że jest piątek;) – Jacob

-1

Spróbuj tego.

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

nie jest prevObject tylko właściwość wyniku?

można zrozumieć jako „wynik jest następujący prevObject ->”

Powiązane problemy