javascript - 循环遍历一组 id 并复制它们

标签 javascript jquery

我有一个无序列表,其 id 如下所示:

<li id="e1">01</li>
<li id="e2">02</li>
<li id="e3">03</li>
<li id="e4" class="event_day">04</li>
<li id="e5" class="event_day">05</li>

还有一个内容如下的 div:

<div id="descriptions">

<div></div>
<div></div>

</div>

我想复制带有 event_day 类的列表项的 id,并将它们分配给末尾带有字母的 div,这样它们就会变成:

<div id="e4d"></div>
<div id="e5d"></div>

我想出了:

$("#descriptions>div").each(function() {
      $(this).attr("id", $(".event_day").attr("id") + "d");
});

但正如您可能会说的那样,它不会循环,而是获取第一个 id 并将其分配给所有 div,从而导致:

<div id="e4d"></div>
<div id="e4d"></div>

如果您能解释逻辑中的缺陷,甚至可能是我可以阅读以提高技能的内容的链接,我将不胜感激。我在看http://docs.jquery.com/Attributes/attr#keyfn但这没有意义。感谢您的阅读!

最佳答案

jquery 中的each 函数还将一个索引参数传递给回调函数。 前提是描述中的 div 数量与类 event_day 的 div 数量相同:

$("#descriptions>div").each(function(n) {
      $(this).attr("id", $(".event_day").eq(n).attr("id") + "d");
});

.eq(n) 返回 jquery 结果集中位置 N 的元素。

不过,您的查询可能会更高效一些,因为现在您要遍历描述中每个 div 的 dom。更好的(恕我直言)是:

var event_days = $("#listIdentifier .event_day");
$("#descriptions>div").each(function(n) {
      $(this).attr("id", event_days.eq(n).attr("id") + "d");
});

关于javascript - 循环遍历一组 id 并复制它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1730012/

相关文章:

javascript - 无法识别的表达式 jquery 属性选择器

javascript - 与 asp.net MVC3 和 knockout js 库一起使用的最佳 ViewModel javascript 文件组织是什么?

javascript - 我想将 JSON 数据从 javascript 传递到 React Native 中的 Native iOS 模块

javascript - 如何读取从 javascript post 调用的 python 脚本中的数据

javascript - 检测 html 元素何时退出屏幕

javascript - 未捕获的语法错误 : Unexpected token ;

javascript - 生成 polymer 应用程序的 zip,不含所有非生产文件

javascript - jQuery 隐藏标题中没有 $somestuff 的图像

javascript - Bootstrap div 背景图像

jquery 更改不适用于选择