有问题的代码。
$( ".icon-image" )[index].attr('src', '/folder/newimage.jpg');
如果我尝试使用上面的.attr(),那么它是未定义的。
$( ".icon-image" ).attr('src', '/folder/newimage.jpg');
但是,如果我这样做,它会将所有img标签/类名更改为同一图像。我不想要的。我只想一次改变一个图像,当我决定时,我用索引循环。
为什么无法实现这个简单的功能,我决定阵列的哪个元素应该改变?
答案 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]
(或变量)中使用的数字相同的数字。