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); });