jquery为title元素分配不同的值

时间:2017-02-21 22:40:47

标签: jquery html

EDITED-修复自己造成的错误。

我有一组图片及其网址。他们都属于同一类。我想根据图像的索引位置为图像指定一个新标题。例如,图像1-3应该是"辐射花",4-6将是光荣的灌木。

    $('.flower').each(function (index, value) { 
      console.log(index + ':' + $(this).attr('title'));
      if (index === 2)) {
        $('.flower').attr('title',"Radiant Flowers");
      } 
    });

控制台显示以下输出:

  • 0:Mariposa Lily - Calochortus 物种
  • 1:Mariposa Lily - Calochortus 物种
  • 2:Mariposa Lily - Calochortus 物种
  • 3:Radiant Flowers

因此,当我检查元素时,标题全部更改为Radiant Flowers。 我注意到的是,当我能够使用它时,代码会改变所有值而不是我希望影响的值。有没有办法做到这一点?

2 个答案:

答案 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");
}