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

Jac*_*cob 33 jquery jquery-plugins jquery-selectors

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

var images = $("#htmlChunk").find("img.Thumb");
console.log(images);
Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

>[<img>, <img>, prevObject: e.fn.e.init[1], context: #document, selector: "#htmlChunk img.Thumb"]
Run Code Online (Sandbox Code Playgroud)

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

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

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

var images = $("#htmlChunk")['prevObject'].find("img.Thumb");
Run Code Online (Sandbox Code Playgroud)

我现在回来了一个对象,但那也不是我想要的.

我跳进了这个项目,所以我对脚本并不熟悉.我试图在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>
Run Code Online (Sandbox Code Playgroud)

Ant*_*ist 47

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

当你调用一个jQuery功能-比如.find(),.filter()等等-对缩小了,或改变,在匹配元素的列表中选择现有jQuery对象所产生的jQuery对象还包含了对状态的基准运行前该功能,这是什么你看到了prevObject.这是它在调用.end()函数时用于恢复的原因.

让我们分解您的代码:

var images = $(".htmlChunk").find("img.Thumb");
Run Code Online (Sandbox Code Playgroud)

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

然后,调用.find("img.Thumb")哪个元素查找已经匹配的元素(具有类的元素)的后代的所有元素,这些元素htmlChunk满足作为<img>元素的条件并且具有类Thumb.

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

var images = $(".htmlChunk img.Thumb");
Run Code Online (Sandbox Code Playgroud)

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

var elementArray = images.get();
Run Code Online (Sandbox Code Playgroud)

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

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

var images = $("#htmlChunk").find("img.Thumb");
Run Code Online (Sandbox Code Playgroud)

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