我有选择元素的一些问题,与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对象,所以您在浏览器的控制台中看到的输出似乎是该对象。具体输出表明对.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();
你使用$(“。htmlChunk”)获取初始元素。但是,< div>元素具有htmlChunk的ID,而不是类,因此代码将不会选择所需的元素。您将要使用以下内容:
var images = $("#htmlChunk").find("img.Thumb");
注意#而不是。在选择器。