jquery attr将id添加到现有元素

时间:2014-04-15 00:42:58

标签: jquery attr

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

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

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

但似乎行不通

3 个答案:

答案 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:

返回jQuery元素
$('.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);
});