jquery - .each() 与 for 循环?需要迭代添加字幕

标签 jquery function iterator iteration each

我对每个循环都有一个问题,我正在努力学习。我有一个 for 循环,它遍历一组数字,然后我想要做的是通过我设置的每个图像设置标题。

Jquery 代码:

for(i=0; i<numImages; i++) {

    var previewCaptions = $('span#tooltips'+(i+1)).text();
    $("ul.selector").find('li').each(function(){
           $(this).attr('title',previewCaptions);
    });
}

HTML 代码:

<span id="tooltips1" class="tip">Caption 1</span>
<span id="tooltips2" class="tip">Caption 2</span>
<span id="tooltips3" class="tip">Caption 3</span>

<ul>
<li><img src="src1" /></li>
<li><img src="src2" /></li>
<li><img src="src3" /></li>
</ul>

我的问题是它只从each() 获取最后一个跨度文本。如何设置 each 一次迭代一个标题而不是只获取最后一个标题?

最佳答案

由于标题和图像是 1:1,我会执行以下操作:

$("img").each(function(index){
  $(this).attr("title", $("span.tip").eq(index).text() );
});

这将循环浏览每个图像(应该使该选择器更加具体)。在每个周期中,获取图像的索引(第一张图像的索引为 1,第二张图像的索引为 2 等),并找到适当的跨度(第一张图像、第一跨度;第二张图像、第二跨度等),从而得到将其文本添加到图像的标题属性中。

您甚至可以进一步简化它:

$("img").attr("title", function(index){
  return $("span.tip").eq(index).text();
});

这会产生以下结果:

<ul>
  <li><img src="src1" title="Caption 1"></li>
  <li><img src="src2" title="Caption 2"></li>
  <li><img src="src3" title="Caption 3"></li>
</ul>

在线演示:http://jsbin.com/odeciv/edit : http://jsbin.com/odeciv/2/edit

关于jquery - .each() 与 for 循环?需要迭代添加字幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6496193/

相关文章:

jquery - 在flask中使用jQuery时如何将脚本与html模板分开?

javascript - JQuery 在表行中向 tds 添加编号

javascript - 更改现有 Kendo Grid 上的选项的正确语法是什么?

c - 声明和定义存储在哪里?

javascript - 在内联脚本之后如何正确注册 yii2 项目中的 js 代码?

javascript - 当我不想让一个函数再次运行时,如何停止它? (jquery)

javascript - 回调函数给出错误 - angularjs

arrays - 如何在 Rust 0.8 中将 Zip 转换为数组?

c++ - 连续迭代多个列表(C++)

iterator - 在 Java 中加入(联合)集合内部的集合