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

标签 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>");
}

基本上,它将图像的替代文本附加到图像本身旁边。

问题是,我有一个包含 10 张图像的页面,并且附加的替代文本始终相同,取自第一张图像。

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

最佳答案

似乎是最简单的方法:

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

jsFiddle Demo

稍微解释一下:

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

  2. 这里的this将引用当前使用的img

  3. .closest()将返回与选择器 'li' 匹配的图像的最近父级。

关于javascript - 如何将适当的属性附加到一系列元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6548435/

相关文章:

javascript - 通过 jQuery 更改文本来制作 div 切换单词?

javascript - 更改资源的 url 时如何检查 403 和 404 错误?

javascript - 从对象动态创建 JQuery Mobile 页面

javascript - 获取每种语言的跨度标题并插入新的跨度

javascript - 使用 jQuery/JavaScript 加载页面时使元素消失

javascript - Leaflet.js HTML Select 不适用于移动设备

javascript - 谷歌饼图显示小切片外部的切片文本

javascript - 查询 jquery if 和 :contains

javascript - 使 jQuery Waypoints 无法与 JavaScript 创建的内容很好地配合

javascript - 从外部文件加载 json