jquery selector renvoie prevObject au lieu de l'élément normal

j'ai quelques problèmes avec la sélection d'éléments, avec Jquery. Lorsque j'essaie de sélectionner un élément:

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

j'obtiens ce résultat:

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

Quelle est la cause de ce résultat retourné? J'ai essayé certaines choses, mais je n'ai toujours pas obtenu le résultat que je voulais.

j'ai essayé de placer le code pour éviter les conflits. j'ai essayé d'effacer l'objet

C'était quelque chose que j'ai trouvé sur le web. http://drupal.org/node/272557

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

je obtenir retourné un objet maintenant, mais c'est pas non plus ce que je voulais.

j'ai sauté dans ce projet, donc je ne suis pas bien connue avec le script. j'ai essayé de chercher prevObject dans les fichiers js mais je n'en ai pas trouvé.

je pense que le problème est qu'il interfère avec un autre fichier javascript. des idées? les directions?

Modifier: 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>
31
demandé sur Jacob 2012-11-09 15:01:23

4 réponses

images variable est un objet jQuery, donc ce que vous voyez la sortie dans la console de votre navigateur semble être cet objet. La sortie spécifique suggère que l'appel à .find() ne correspond en fait à aucun élément; comparez les deux sorties de la console de c'jsFiddle (en Chrome).

Lorsque vous appelez une fonction jQuery -.find(),.filter(), etc - qui réduit, ou modifie, la liste des éléments appariés sur un objet jQuery existant le résultat jQuery object contient également une référence à l'état avant que cette fonction ne soit exécutée, ce qui est ce que vous voyez comme prevObject. C'est ce qu'il utilise pour revenir à quand vous appelez le .end() fonction.

décomposez votre code:

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

La première partie - $(".htmlChunk") - correspond à tous les éléments qui ont la classe htmlChunk sur eux, et retourne un objet jQuery contenant ces éléments.

vous pouvez Ensuite appeler .find("img.Thumb") qui cherche tous les éléments qui sont descendants des éléments déjà appariés (ceux avec la classe htmlChunk) qui satisfont les critères d'un <img> élément et avoir la classe Thumb sur eux.

vous pouvez utiliser un seul sélecteur pour récupérer les éléments, ce qui pourrait vous donner de meilleurs résultats:

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

si vous voulez un tableau des éléments DOM réels, plutôt qu'un objet jQuery les contenant, Vous pouvez utiliser le .get() fonction:

var elementArray = images.get();

Pour l'adresse de modifier à la question d'inclure le code HTML:

vous utilisez $(".htmlChunk") pour obtenir l'élément initial. Cependant, que <div> élément ID, et non pas une classe, d' htmlChunk pour que le code ne sélectionne pas l'élément dont vous avez besoin. Vous aurez envie d'utiliser le code suivant:

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

Notez le # plutôt que . dans le sélecteur.

43
répondu Anthony Grist 2012-11-09 11:23:19

On dirait que vous essayez de sélectionner la classe ".htmlChunk", mais n'existe pas. Essayez de sélectionner par id à la place.

var images = $("#htmlChunk").find("img.Thumb");
3
répondu anderssonola 2012-11-09 11:23:17

essayez ceci.

   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>
-1
répondu xdeepakv 2012-11-09 11:26:59

prevObject n'est-il pas une propriété du résultat?

vous pourriez le comprendre comme "le résultat est le suivant prevObject ->"

-2
répondu devman 2016-04-22 08:59:23