首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有方法显示HTML元素中元素的数量吗?

有方法显示HTML元素中元素的数量吗?
EN

Stack Overflow用户
提问于 2022-05-16 12:01:54
回答 2查看 59关注 0票数 0

我有以下动态创建的html标记:

代码语言:javascript
复制
<div class="container">
    <div class="tmb"><h2 class="tmb-title">Tips & tricks</h2><img src="..."></div>
    <div class="tmb"><h2 class="tmb-title">About us</h2><img src="..."></div>
    <div class="tmb"><h2 class="tmb-title">Start up</h2><img src="..."></div>
</div>

我想在每个..tmb标题之前添加一个副标题。因此,我添加了以下jQuery:

代码语言:javascript
复制
$("<p class='podcast-episode'>Episode 1</p>").insertBefore(".tmb-title");

这增加了副标题‘第1集’前面的每一个..tmb标题,这是我想要实现的。

现在,我想将我的..podcast集副标题中的编号改为从最后一个元素开始的元素数量。就像有“启动”标题的块得到副标题“第1集”,“关于我们”得到副标题“第2集”等等。

我试过这个:

代码语言:javascript
复制
$count =  jQuery(".tmb").size() - 1;
$(".tmb:nth-last-child("+$count+") .podcast-aflevering").text(function(i,txt) {return txt.replace(/\d+/,$count);});

这对“提示和技巧”块来说很管用,副标题现在是“第3集”,但是对于“关于我们”,它仍然是“第1集”。

如果问题不明确,我很乐意添加我想要实现的HTML标记。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-16 12:08:26

首先,请注意,size()已被废弃,并已从jQuery的最新版本中删除。改用length属性,并更新正在使用的jQuery版本。最新的是3.6.0。

关于您的问题,要做您需要做的事情,使用length来确定有多少.tmb-title元素,然后循环它们从集合中减去当前元素的索引:

代码语言:javascript
复制
jQuery($ => {
  let podcastCount = $('.tmb-title').length;
  $('.tmb-title').each((i, el) => $(el).before(`<p class='podcast-episode'>Episode ${podcastCount - i}</p>`));
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<div class="container">
  <div class="tmb">
    <h2 class="tmb-title">Tips &amp; tricks</h2>
    <img src="...">
  </div>
  <div class="tmb">
    <h2 class="tmb-title">About us</h2>
    <img src="...">
  </div>
  <div class="tmb">
    <h2 class="tmb-title">Start up</h2>
    <img src="...">
  </div>
</div>

票数 1
EN

Stack Overflow用户

发布于 2022-05-16 12:20:14

在函数之外声明一个计数器(等于.tmb的数目):

代码语言:javascript
复制
let cnt = $('.tmb').length;

然后在每次迭代中使用.each()并减少计数器:

代码语言:javascript
复制
$('.tmb').each(function() {
  $(this).prepend(`<p class='podcast-episode'>Episode ${cnt--}</p>`);
});

代码语言:javascript
复制
let cnt = $('.tmb').length;

$('.tmb').each(function() {
  $(this).prepend(`<p class='podcast-episode'>Episode ${cnt--}</p>`);
});
代码语言:javascript
复制
<div class="container">
    <div class="tmb"><h2 class="tmb-title">Tips & tricks</h2><img src="..."></div>
    <div class="tmb"><h2 class="tmb-title">About us</h2><img src="..."></div>
    <div class="tmb"><h2 class="tmb-title">Start up</h2><img src="..."></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72258895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档