我是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'
谢谢!
答案 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>