我在div中有一堆imgs,上面有一个类,在我的JS中我有一个for循环,可以将图像重新调整到一个框内而不会拉伸
$('.gallery img')[i].attr('id', 'img' + i);
这就是我试图让每个img拥有自己的ID,如'img1''img2''img3'等
但似乎行不通
答案 0 :(得分:8)
将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字符串。
答案 1 :(得分:1)
当你这样做时:
$('.gallery img')[i]
它返回DOMObject
而不是jQuery对象。您将需要使用.eq()
在i:
$('.gallery img').eq(i).attr('id', 'img' + '"' + i + '"');
但请注意,您似乎试图将"
作为ID名称的一部分。不幸的是,单引号和双引号不是ID名称的有效字符。见What are valid values for the id attribute in HTML?
答案 2 :(得分:0)
使用返回的jQuery对象提供的each()
方法。它迭代返回集合中的元素。 each
方法采用将在jQuery对象中的每个元素上调用的回调函数。 each
方法将jQuery对象中每个元素的索引作为其第一个参数传递,将元素本身作为其第二个参数传递。
这样可行:
$('.gallery img').each(function(index, elem) {
$(this).attr('id', 'img' + index);
});