Javascript 如何将适当的属性附加到一系列元素?

Javascript 如何将适当的属性附加到一系列元素?,javascript,jquery,dom-manipulation,dom-traversal,Javascript,Jquery,Dom Manipulation,Dom Traversal,我有一段代码: if ($('.page-template-default .gallery img').attr('alt') !== undefined) { $('.page-template-default .gallery li').append("<small>" + $('.page .gallery img').attr('alt') + "</small>"); } if($('.page template default.gallery img

我有一段代码:

if ($('.page-template-default .gallery img').attr('alt') !== undefined) {
   $('.page-template-default .gallery li').append("<small>" + $('.page .gallery img').attr('alt') + "</small>");
}
if($('.page template default.gallery img').attr('alt')!==未定义){
$('.page template default.gallery li').append(“+$('.page.gallery img').attr('alt')+”);
}
基本上,它会在图像本身旁边附加图像的alt文本

问题是,我有一个包含10个图像的页面,附加的alt文本总是相同的,取自第一个图像


有没有办法将每个alt文本返回到相应的图像

如果您想像这样使用每个
img
的属性,您需要遍历每个
img

var $imgs = $('.page-template-default .gallery li > a > img');
$imgs.each(function() {
   var $img = $(this);
   if ($img.attr('alt') !== undefined) {
      var $li = $img.parent().parent();
      $li.append("<small>" + $img.attr('alt') + "</small>");
   }
});
var$imgs=$('.page-template-default.gallery-li>a>img');
$imgs.每个(函数(){
var$img=$(本);
如果($img.attr('alt')!==未定义){
var$li=$img.parent().parent();
$li.append(“+$img.attr('alt')+”);
}
});

如果您想像这样使用每个
img的属性,您需要遍历每个
img

var $imgs = $('.page-template-default .gallery li > a > img');
$imgs.each(function() {
   var $img = $(this);
   if ($img.attr('alt') !== undefined) {
      var $li = $img.parent().parent();
      $li.append("<small>" + $img.attr('alt') + "</small>");
   }
});
var$imgs=$('.page-template-default.gallery-li>a>img');
$imgs.每个(函数(){
var$img=$(本);
如果($img.attr('alt')!==未定义){
var$li=$img.parent().parent();
$li.append(“+$img.attr('alt')+”);
}
});
$('.page template default.gallery img')。每个(函数(i,it){
if($(this).attr('alt')!==未定义){
var li=$('.page-template-default.gallery-li').get(i);
$(li).append(“+$(this.attr('alt')+”);
}
});
$('.page template default.gallery img')。每个(函数(i,it){
if($(this).attr('alt')!==未定义){
var li=$('.page-template-default.gallery-li').get(i);
$(li).append(“+$(this.attr('alt')+”);
}
});

似乎是最简单的方法:

$('.page-template-default .gallery img').attr('alt', function (i, alt) {
    if (typeof alt != 'undefined' && alt!='') {
        $(this).closest('li').append(alt);
    }
});

请稍作解释:

  • 可以将函数用作其第二个参数。通常,它用于使用函数的返回值设置属性(这次是
    alt
    )。在本例中,我不返回任何内容,只使用它循环指定图像的
    alt
    属性

  • 此处将指当前使用的
    img

  • 将返回与选择器“li”匹配的图像的最近父级


  • 这似乎是最简单的方法:

    $('.page-template-default .gallery img').attr('alt', function (i, alt) {
        if (typeof alt != 'undefined' && alt!='') {
            $(this).closest('li').append(alt);
        }
    });
    

    请稍作解释:

  • 可以将函数用作其第二个参数。通常,它用于使用函数的返回值设置属性(这次是
    alt
    )。在本例中,我不返回任何内容,只使用它循环指定图像的
    alt
    属性

  • 此处将指当前使用的
    img

  • 将返回与选择器“li”匹配的图像的最近父级

  • var$imgs=$('.page-template-default.gallery-img');
    $imgs.每个(功能$img){
    如果($img.attr('alt')!==未定义){
    $img.after(“+$img.attr('alt')+”);
    }
    });
    
    var$imgs=$('.page-template-default.gallery-img');
    $imgs.每个(功能$img){
    如果($img.attr('alt')!==未定义){
    $img.after(“+$img.attr('alt')+”);
    }
    });
    
    图像和
    li
    s之间的关系是什么?我们能看到你的标记吗?
    li
    是容器。最后的HTML应该是这样的:
  • 标题
  • 。图像和
    li
    之间的关系是什么?我们能看到你的标记吗?
    li
    是容器。最后的HTML应该是这样的:
  • 标题
  • 。稍微调整一下,因为他想把它包装成一个
    :@Nick谢谢,我忘了那部分。顺便说一句,我从你的小提琴中学到了一些新东西:)。稍微调整一下,因为他想把它用
    包起来:@Nick谢谢,我忘了那部分。顺便说一句,我从你的小提琴中学到了一些新东西:)。