首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何计算使用jquery或javascript的类相同但位于特定<ul>中的html元素?

如何计算使用jquery或javascript的类相同但位于特定<ul>中的html元素?
EN

Stack Overflow用户
提问于 2018-06-28 22:50:19
回答 1查看 113关注 0票数 0

我需要在我的评论和子评论系统中显示"span“标记中的文本:”显示/隐藏回复“。想象一下一个评论系统,你向它提交一个评论,然后这个评论就会显示在页面上。然后另一个人回复这个评论,这个回复也会立即显示出来。

我想要的是,当我没有任何回复时,页面上不会显示“显示/隐藏回复”这一文本,也就是说,一些类似的逻辑:If(无回复){不显示“显示/隐藏回复”}。嗯,我创建了一个jQuery代码,如下所示:

代码语言:javascript
复制
$(document).ready(function(){
//This code below is to count how many classes ".div" I have
console.log($('.div').length);
if ($('.div').length > 0){
    $('span.text').text("Show/hide replies")
    }else{

    }
});

这是html:

代码语言:javascript
复制
<ul class="elements">
    <span class="text"></span>
    <li class="div">
        <div class="wraparound">Isso aêeee</div>
    </li>
    <li class="div">
        <div class="wraparound">Hein?</div>
    </li>
</ul>

<ul class="elements">
    <span class="text"></span>
    <li class="div">
        <div class="wraparound">O q faço?</div>
    </li>
    <li class="div">
        <div class="wraparound">N vai me responder?</div>
    </li>
</ul>

这两个类的名称必须相同,因为它实际上是while循环(php)的一部分,基于数据库查询(它查询数据库中有多少回复,并在其数量大于零时显示这些回复,就这么简单)。问题是,我想要计算在"ul“标签中有多少带有".div”类的列表(这意味着在main注释下有多少回复)。

如果我激活页面检查器,浏览器控制台将显示".div“的总数(4),但我所需要的是第一个ul中的".div”的数目,然后是第二个ul中的数目,依此类推。如果".div“的数量为零,则不会显示文本”显示/隐藏回复“。它仅在特定"ul“(2)中的".div”的数量大于零时显示。

但控制台会统计总数(4)。因此,如果我在第一个"ul“中有一个回复(带有类”.div“的列表),但在第二个"ul”中没有回复,即使这样,控制台也会对其进行计数,当1大于零时,文本将出现在两个"ul“的上方,位于标记"span”内。我该如何避免这种情况?

好了,我刚刚编辑了我的问题,并且我把我的span标签放在了"ul“中,这样它就变成了一个孩子。根据@Amit Kumar的帮助,我重写了我的jQuery代码,并更改为:

代码语言:javascript
复制
 $(document).ready(function(){  
    $('ul.elements').each(function(index,ulElement){
        var listlength = $(ulElement).find('li.div').length;
        console.log(listlength);
        if (listlength > 0){
            $('span.text').not($(this).next('span.text')).text("Show/hide replies"); //Yeah, but... Which span?
            //$(this).next('span.text').text("");
        }
    });
});

唯一的问题是跨度。我希望文本仅显示在"li.div“数大于零的元素"ul”的子元素(Ren)的跨度中。这意味着你只能在真正有回复的地方显示回复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-29 00:48:17

代码语言:javascript
复制
$("ul.elements").each((index,ulElement)=>{
    const length = $(ulElement).find("li.div").length; 
    // length variable has number of replies for each post.
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51085878

复制
相关文章

相似问题

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