【问题标题】:jQuery selector returns prevObject instead of normal elementjQuery 选择器返回 prevObject 而不是普通元素
【发布时间】:2012-10-29 16:47:31
【问题描述】:

我在使用 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>

【问题讨论】:

  • 您看到的结果是返回的 jQuery 对象的属性。如果没有 HTML 样本,就无法进一步帮助您。

标签: jquery jquery-plugins jquery-selectors


【解决方案1】:

您的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"),它会查找所有满足作为&lt;img&gt; 元素和具有Thumb 类标准的已匹配元素(具有htmlChunk 类的元素)的后代元素他们。

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

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

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

var elementArray = images.get();

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

您正在使用$(".htmlChunk") 来获取初始元素。但是,&lt;div&gt; 元素有一个htmlChunkID,而不是一个类,因此代码不会选择您需要的元素。您需要使用以下内容:

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

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

【讨论】:

  • 我现在确实得到了结果,因为ID(愚蠢的错误我的坏)但我仍然不知道prevObject来自哪里以及为什么?通常你会在一个数组中获取 DOM 元素,之前从未见过它返回一个奇怪的对象。只是为了澄清你如何摆脱这个对象,例如
  • 或者它看起来不一样,因为 chrome 最近更新了浏览器,控制台现在显示了更多信息,而不是以前,所以这可能是我感到困惑的原因
【解决方案2】:

看起来您尝试选择类“.htmlChunk”,但不存在。尝试按 id 选择。

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

【讨论】:

    【解决方案3】:

    试试这个。

       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>
    

    【讨论】:

      【解决方案4】:

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

      你可以理解为“结果有以下prevObject ->”

      【讨论】:

        猜你喜欢
        • 2022-10-02
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2015-05-07
        • 2011-10-23
        • 2011-03-01
        相关资源
        最近更新 更多