Javascript 按数据id选择库并使用jQuery将子图像放入数组

Javascript 按数据id选择库并使用jQuery将子图像放入数组,javascript,jquery,arrays,foreach,Javascript,Jquery,Arrays,Foreach,我的html文档中有几个.gallery div。每个图库包含两个图像。如果单击具有数据id的特定.gallery中的图像,我希望使用gallery的数据id将同一个gallery中的所有图像及其src属性放入一个数组中 这就是我尝试过的: $('.img')。单击(函数(){ var galleryValue=$(this).closest('.gallery').attr('data-id'); //警报(galleryValue); $('.gallery').data('id').ch

我的html文档中有几个.gallery div。每个图库包含两个图像。如果单击具有数据id的特定.gallery中的图像,我希望使用gallery的数据id将同一个gallery中的所有图像及其src属性放入一个数组中

这就是我尝试过的:

$('.img')。单击(函数(){
var galleryValue=$(this).closest('.gallery').attr('data-id');
//警报(galleryValue);
$('.gallery').data('id').children().each(function()){
push($(this.attr('src'));
警报(URL);
});
});

.data('id')
返回字符串,不能将其链接到jQuery对象中。您可以使用
.filter('[data id=“'+galleryValue+''“]')
进行链接,或者将属性选择添加到实际选择器中,如下所示:

$('.img')。单击(函数(){
var galleryValue=$(this).closest('.gallery').data('id');
//警报(galleryValue);
URL=[];
$('.gallery[data id=“'+galleryValue+''“]).children().each(函数(){
push($(this.attr('src'));
});
警报(URL);
});

这应该行得通

$('.img').click(function(){
  var urls = [];
  $(this).closest('.gallery').find('img').each(function() {
    urls.push($(this).attr('src'));
  });
  // now do something with urls
});

如果您还需要
id
,那么您也可以在遍历时获取它。但是,对于仅在同一容器中查找图像,您可以完全根据上下文进行操作。

您正确地使用了上下文选择器,并使用了
$(this).closest('.gallery')
来获取相关的gallery元素。那么,你为什么不在each之前对逻辑做同样的事情呢?我让它这样工作,每个都正确吗?如果它工作,它工作,:)只有一件事,一个带有突出显示图像的div会弹出,如果页面中的其他图像仍然在屏幕上,我在突出显示的div处于活动状态时单击另一个图像,它会破坏阵列并将每个图库中的所有图像放入其中。如果div覆盖了整个页面,那么情况就不是这样了,这听起来像是第二个问题
$(this).closest('.gallery').children()
实际上只会找到与您单击的图像库相关的图像。我同意这更精简(显然)。只要数据id的源和图像相关,这将是优选的。