为什么无法更改图片的src属性?

时间:2014-11-07 22:33:23

标签: javascript jquery

有问题的代码。

$( ".icon-image" )[index].attr('src', '/folder/newimage.jpg');

如果我尝试使用上面的.attr(),那么它是未定义的。

 $( ".icon-image" ).attr('src', '/folder/newimage.jpg');

但是,如果我这样做,它会将所有img标签/类名更改为同一图像。我不想要的。我只想一次改变一个图像,当我决定时,我用索引循环。

为什么无法实现这个简单的功能,我决定阵列的哪个元素应该改变?

2 个答案:

答案 0 :(得分:6)

当您使用[]索引到jQuery集时,您得到的是DOM元素,而不是jQuery集。但attr是一个jQuery函数,而不是DOM函数。

使用eq,这样你就可以得到一个只包含那个元素的jQuery集,并可以使用attr

$( ".icon-image" ).eq(index).attr('src', '/folder/newimage.jpg');

(或.prop('src', ...),在这种特殊情况下它也会出现同样的情况。)

...或使用[]并在生成的DOM元素上使用反射的DOM属性src

$( ".icon-image" )[index].src = '/folder/newimage.jpg';

答案 1 :(得分:2)

使用.eq(),因为这是从jQuery项目集合中选择索引项目的最简单方法,特别是如果您习惯使用基于0的索引 -

$( ".icon-image" ).eq(0).attr('src', '/folder/newimage.jpg');

您将使用与上面[index](或变量)中使用的数字相同的数字。