我正在尝试使用jQuery查找选择器访问照片列表,但由于某种原因,它似乎不起作用。使用jQuery 1.8
理想代码:
$(this).siblings(images_container).find(photo);
当前代码:
$(this).siblings(images_container).children().find(".photo");
目前的代码也不起作用。选择孩子,如:
$(this).siblings(images_container).children()
album_id_3是$this
HTML
<div class="photo_wrap">
<a href="#" id="album_id_3">
<div class="photo_img_wrap">
<img src="/assets/img/user_images/2_4.jpg">
<div class="album_photo_count">
1
</div>
</div>
</a>
<div class="album_name">
Untitled
</div>
<div style="display: none;" class="images_container">
<div class="album_description_hidden">
test
</div>
<div class="city_id">
2
</div>
<div class="photo">
<div class="desc">
</div>
<div class="image_id">
4
</div>
<div class="name">
/assets/img/user_images/2_4.jpg
</div>
<div class="status">
1
</div>
<div class="time">
1363005386
</div>
</div>
</div>
返回
jQuery(div.album_description_hidden, div.city_id, div.photo)
但是当我尝试添加find来专门抓取带有“.photo”的元素时,jQuery返回空。你知道为什么吗?
4条答案
按热度按时间noj0wjuj1#
这是因为
.find()
只在您正在搜索的元素的子元素中查找。因此,由于div.photo是您正在搜索的元素之一,因此不会出现在结果中vkc1a9a22#
我会这样做:
jQuery函数可以传递第二个参数,即Dom元素或选择器,以查找下面的元素。
mlmc2os53#
jQuery API文档:
产品名称:获取当前匹配元素集中每个元素的后代,通过选择器、jQuery对象或元素进行过滤。
所以使用你的代码,你得到了你的图像容器的正确的孩子,然后你用
.photo
在他们里面搜索..你应该让你的过滤器在孩子们身上,而不是在他们里面。kiayqfof4#
如果您正在搜索div.photo,它是images容器的子级,那么您可以执行以下操作:
不需要使用
find()
。更新
我想你错过了images_container的课程:
或者你可以这样做: