jQuery选择器返回prevObject而不是普通元素

时间:2012-11-09 11:01:24

标签: jquery jquery-plugins jquery-selectors

我在使用Jquery选择元素时遇到了一些问题。 当我尝试选择一个元素时:

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

我得到了这个结果:

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

导致此返回结果的原因是什么? 我尝试了一些东西,但仍然没有得到我想要的结果。

我试图包装代码以避免冲突。 我试图清除对象

这是我在网上找到的东西。 http://drupal.org/node/272557

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

我现在回来了一个物体, 但那也不是我想要的。

我跳进了这个项目,所以我对脚本并不熟悉。 我试图在js文件中搜索prevObject但却找不到。

我认为问题在于它干扰了其他一些javascript文件。 有任何想法吗?方向?

编辑: 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>

4 个答案:

答案 0 :(得分:45)

您的images变量是一个jQuery对象,因此您在浏览器控制台中看到的输出似乎就是该对象。具体输出表明对.find()的调用实际上并不匹配任何元素;比较this jsFiddle的两个控制台输出(在Chrome中)。

当你调用一个jQuery函数 - 比如.find().filter()等 - 缩小或改变现有jQuery对象上匹配元素的列表时,生成的jQuery对象也包含一个引用该函数运行之前的状态,这是您prevObject所看到的。这是您在调用.end()函数时恢复使用的内容。

让我们分解你的代码:

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

第一部分 - $(".htmlChunk") - 匹配所有具有类htmlChunk的元素,并返回包含这些元素的jQuery对象。

然后调用.find("img.Thumb"),它查找已经匹配的元素(具有类htmlChunk的元素)的后代的所有元素,这些元素满足<img>元素的条件并具有他们的班级Thumb

您可以使用单个选择器来检索元素,这可能会给您带来更好的结果:

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

如果你想要一个实际DOM元素的数组,而不是一个包含它们的jQuery对象,你可以使用.get()函数:

var elementArray = images.get();

解决问题的编辑以包含HTML:

您正在使用$(".htmlChunk")获取初始元素。但是,<div>元素具有 ID ,而不是htmlChunk的类,因此代码不会选择您需要的元素。您将要使用以下内容:

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

请注意#而不是选择器中的.

答案 1 :(得分:3)

看起来你试图选择类“.htmlChunk”,但不存在。尝试通过id选择。

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

答案 2 :(得分:-1)

试试这个。

   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>

答案 3 :(得分:-2)

不是prevObject只是结果的属性吗?

您可以将其理解为“结果具有以下prevObject - &gt;”