jQuery查找选择器不选择数组项

mgdq6dx1  于 2023-06-29  发布在  jQuery
关注(0)|答案(4)|浏览(171)

我正在尝试使用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返回空。你知道为什么吗?

noj0wjuj

noj0wjuj1#

这是因为.find()只在您正在搜索的元素的子元素中查找。因此,由于div.photo是您正在搜索的元素之一,因此不会出现在结果中

vkc1a9a2

vkc1a9a22#

我会这样做:

$(".photo", $(this).parent())

jQuery函数可以传递第二个参数,即Dom元素或选择器,以查找下面的元素。

mlmc2os5

mlmc2os53#

jQuery API文档:
产品名称:获取当前匹配元素集中每个元素的后代,通过选择器、jQuery对象或元素进行过滤。
所以使用你的代码,你得到了你的图像容器的正确的孩子,然后你用.photo在他们里面搜索..你应该让你的过滤器在孩子们身上,而不是在他们里面。

kiayqfof

kiayqfof4#

如果您正在搜索div.photo,它是images容器的子级,那么您可以执行以下操作:

$(this).siblings(images_container).children('div.photo')

不需要使用find()

更新

我想你错过了images_container的课程:

$(this).siblings(".images_container").children('div.photo')

或者你可以这样做:

$(this).parent().find('div.photo'); //parent takes you to `photo_wrap` and find will search `div.photo` inside photo_wrap which it will find

相关问题