使用.each()进行jQuery变量迭代

时间:2012-10-03 15:35:57

标签: jquery jquery-selectors

我的代码需要捕获变量中图像的'src'。然后,它需要将此变量插入到围绕图像的链接上的“href”标记中。

$('.fancybox-image-li img').each(function(test) {
    var test = $(this).attr("src");
    $('.fancybox-image-link').attr('href', ''+test+'');
});

不幸的是,似乎正在发生的是'test'var只获取最后一个img的属性,然后将其插入到所有'href'属性中。

任何想法如何让每个图像更改变量。

4 个答案:

答案 0 :(得分:1)

也许你应该做

$('.fancybox-image-li img').each(function(test) {

    var test = $(this).attr("src");
    // find the closest element with the class
    $( this ).closest('.fancybox-image-link').attr('href', ''+test+'');

});

否则,在每次迭代中,您将所有$('.fancybox-image-link')的href设置为当前href属性,从而获得最后一个href的$('.fancybox-image-link')

答案 1 :(得分:0)

您的链接选择器不正常。此$('.fancybox-image-link')将选择与该类相关的所有链接,因此所有链接都具有相同的href属性。

您需要一个更具体的链接选择器。如果图像和链接都包含在同一个元素中,也许可以尝试使用父元素。

答案 2 :(得分:0)

您应该使用{child}等选择方法$('.fancybox-image-link')更具体地使用$(this)

答案 3 :(得分:0)

$('.fancybox-image-link')返回所有元素的元素。你实际上是在每次循环迭代时都修改它们。

相反,请使用.index()选择个别的:

$('.fancybox-image-li img').each(function(index, value) {
    $('.fancybox-image-link').index(index).attr('href', $(this).attr("src"));
});