jquery attr将id添加到现有元素

我在div中有一堆imgs,上面有一个类,在我的JS中,我有一个for循环,可以将图像重新调整为一个框内的fir,而不需要拉伸

$('.gallery img')[i].attr('id', 'img' + i); 

这就是我试图让每个img拥有自己的id,如’img1”img2”img3’等

但似乎行不通

用以下内容替换for循环:

 $('.gallery img').each(function(i) { $(this).attr('id', 'img' + i); // You can also add more code here if you wish to manipulate each IMG element further }); 

这个代码块循环遍历每个IMG元素,计数器i在每个实例之后递增,并且该计数器作为id字符串的后缀。

当你这样做:

 $('.gallery img')[i] 

它返回DOMObject而不是jQuery对象。 你需要使用.eq()来返回i的jQuery元素:

 $('.gallery img').eq(i).attr('id', 'img' + '"' + i + '"'); 

但请注意,您似乎试图将“包含"作为ID名称的一部分。不幸的是,单引号和双引号不是ID名称的有效字符。请参阅HTML中id属性的有效值是什么?

在返回的jQuery对象上使用each()方法提供。 它迭代返回集合中的元素。 each方法都采用一个回调函数,该函数将在jQuery对象的每个元素上调用。 each方法都将jQuery对象中每个元素的索引作为其第一个参数传递,将元素本身作为其第二个参数传递。

这可行:

 $('.gallery img').each(function(index, elem) { $(this).attr('id', 'img' + index); });