更改标签属性的数组

时间:2011-11-10 20:32:09

标签: javascript jquery

我有一个对象数组(数据)

data[0].image = image1.jpg;
data[0].name = "some name";

data[1].image = image2.jpg;
data[1].name = "some name";

data[2].image = image3.jpg;
data[2].name = "some name";

data[3].image = image4.jpg;
data[3].name = "some name";

我还有一组嵌套在ul中的标签。

<ul class='swapme'>
  <li><img class="swapme" src="a.jpg" /></li>
  <li><img class="swapme" src="b.jpg" /></li>
  <li><img class="swapme" src="c.jpg" /></li>
  <li><img class="swapme" src="d.jpg" /></li>
</ul>

我知道我可以用

抓取img标签
$('ul.swapme').children('img.swapme')

我知道我可以用

换出每个图像的src属性
$('img.swapme').attr('src', data[0].image)

我的问题是,用相应的数据对象交换src属性的正确方法是什么。即,a.jpg成为image1.jpg。 。 。等。 。 。

如果我使用循环,它看起来很丑陋,任何人都可以提供更好的方法/正确的方法吗?

3 个答案:

答案 0 :(得分:3)

您可以使用$.each()循环并使用index

var data = [
    {'image':'image1.jpg', 'name':'some name'},
    {'image':'image2.jpg', 'name':'some name'},
    {'image':'image3.jpg', 'name':'some name'},
    {'image':'image4.jpg', 'name':'some name'},
];

$('ul.swapme').find('img.swapme').each(function (index, value) {
    $(value).attr('src', data[index].image);
});

请注意,我将$('ul.swapme').children('img.swapme')更改为$('ul.swapme').find('img.swapme'),因为图片代码不是无序列表代码的直接后代。

以下是此解决方案的一个方面:http://jsfiddle.net/jasper/Bycse/

答案 1 :(得分:2)

只需使用jQuery's each method

$('ul.swapme img.swapme').each(function(i) {
    $(this).attr('src', data[i].image);
});

答案 2 :(得分:1)

你需要循环,但我认为这不是那么难看:

$.each(data,function(index){
    $("img.swapme").eq(index).attr("src",this.image);
});