jQuery选择返回prevObject代替正常元件(jQuery selector returns

2019-08-02 12:51发布

我有一些问题与选择元件,使用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但could'nt狼狈不堪。

我认为这个问题是它与其他一些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>

Answer 1:

你的images变量是一个jQuery对象,所以你看到的在浏览器的控制台输出似乎是对象。 特定输出表明调用.find()实际上不匹配的任何元件; 比较来自两个控制台输出此的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");

注意# ,而不是. 在选择。



Answer 2:

它看起来像你想选择类“.htmlChunk”,但不存在。 尝试通过ID选择来代替。

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


Answer 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>


Answer 4:

不只是prevObject结果的财产?

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



文章来源: jQuery selector returns prevObject instead of normal element