如何计算无序列表中的项目数量。 JQuery的

时间:2016-11-08 13:15:23

标签: javascript jquery html

我是StackOverflow社区的新手! 我一直在寻找这个话题,其中一些人说我可以知道我正在寻找什么。但我无法实现。

我也是JQuery和JS的新手,如果我的代码中的任何内容都很混乱,我道歉。

我的代码:

$('#btnComments').click(function () {
    if ($('#commentArea').val() != "") {
        var $newli = document.createElement('li');
        $newli.textContent = $('#commentArea').val();
        $('#listaDeComentarios').after($newli);
        $('#commentArea').val('');
        var cantLiEnUl = $('#listaDeComentarios').length;
        $newli.tagName = 'Comments[' + cantLiEnUl.toString() + ']';
    }
});

在我的代码的第一部分中,我只是从TextArea获取文本并将其添加到注释列表中。我想要做的是为li设置正确的索引,因为我用模型发布了该列表,如果我不给每个li一个索引,那么这个属性在模型中达到空值。

我一直在做一些console.log(cantLiEnUl)知道如何更改值,它没有,它始终是1. #listaDeComentarios是我的ul的id。

如果有什么不够清楚,我会试图更好地解释自己。

提前致谢!

我在阅读有关@Turnip的评论后发现了。

我发帖是因为他回复了评论而无法将其标记为解决方案。我的问题是.after

您应该使用.append而不是.after else,长度将始终为零。你实际上并没有将li添加到ul中。此外,您无法为tagName分配值 - 这是'类型'元素。在您的情况下,$ newli.tagName等于' LI'

谢谢!

1 个答案:

答案 0 :(得分:0)

我会猜测并假设你正在尝试这样做:

$('#btnComments').click(function () {
    if ($('#commentArea').val() != "") {
        var $newli = document.createElement('li');
        $newli.textContent = $('#commentArea').val();

        /**
        * Use `.append` not `.after`...
        */
        $('#listaDeComentarios').append($newli);
        $('#commentArea').val('');
      
        /**
        * Check the length of the `li` not the `ul`...
        */
        var cantLiEnUl = $('#listaDeComentarios li').length;
        
        /**
        * Replace 'data-myData' with whatever attribute you are wanting to set...
        */
        $($newli).attr('data-myData', 'Comments[' + cantLiEnUl.toString() + ']');
    }
});
#listaDeComentarios li:after {
  content: ' - ' attr(data-myData);
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<textarea id="commentArea" placeholder="Enter some text..."></textarea>
<br>
<button id="btnComments">
Click
</button>

<ul id="listaDeComentarios">

</ul>