EDITED-修复自己造成的错误。
我有一组图片及其网址。他们都属于同一类。我想根据图像的索引位置为图像指定一个新标题。例如,图像1-3应该是"辐射花",4-6将是光荣的灌木。
$('.flower').each(function (index, value) {
console.log(index + ':' + $(this).attr('title'));
if (index === 2)) {
$('.flower').attr('title',"Radiant Flowers");
}
});
控制台显示以下输出:
因此,当我检查元素时,标题全部更改为Radiant Flowers。 我注意到的是,当我能够使用它时,代码会改变所有值而不是我希望影响的值。有没有办法做到这一点?
答案 0 :(得分:2)
你的parseInt有一个不好的论点:'index'> 2 你应该把它改成parseInt(index)> 2,我想......
关于实际问题:循环遍历元素并检测到要修改的元素...然后使用“flower”类修改所有元素。
这样做的好方法是把它放在你的“if”中:$(this).attr('title',“Radiant Flowers”);
原因是$('。flower')将使用CSS类“flower”选择所有元素,但是您只需要更改当前元素。这就是为什么,$(this)应该有效。更好的是,你可以使用$(value)因为“value”是指向foreach循环中当前元素的变量。
答案 1 :(得分:1)
那里发生了什么,是这一行:$('.flower').attr('title',"Radiant Flowers");
实际上改变了{strong>所有元素flower
,而不是你想要改变的元素。
为了解决这个问题,请在代码中更改:
if (index === 2)) {
$('.flower').attr('title',"Radiant Flowers");
}
到
if (index > 2)) {
$(this).attr('title',"Radiant Flowers");
}