循环遍历列表以追加和删除 使用 jQuery
我每 5 秒调用一次服务器来获取数据,然后循环遍历我的列表并将包含正确数据的“跨度”附加到我的列表中。问题是当从服务器返回的数据为空时,我无法使“span”消失,除非我在“span”上使用“fadeOut()”。但随后我无法计算所有“li span”(countCont())的正确总和,因为它们仍然附加到 DOM 并具有值。 所以我想做的是,如果从分配给它的服务器返回的数据为空,则删除相应的“li span”,这样我就可以计算正确的总和。 以下是我将数据分配到列表的方法:
$.get(url, function (data) {
$.each(data, function (i, info) {
$("#accordion li").text(function (y, name) {
if ($(this).is(":contains(" + info.cName + ")")) {
if ($(this).is(":has(span)")) {
$(this).children().replaceWith('<span class = "cCount">' + info.count + '</span>');
$(this).children().fadeOut(10000);
} else {
$(this).append('<span class = "cCount">' + info.count + '</span>');
}
}
countCont($(this).parent().attr('id'));
});
});
});
I am calling the server every 5 secs to get the data, then looping through my list and appending a "span" with the right data to my list. The problem is i can't make the "span" dissapear when data returned from the server is empty, except when i use "fadeOut()" on the "span". But then i can't calculate the right sum of all the "li span" (countCont() ), since they are still appended to the DOM and have a value.
So what i would like to do is remove the respective "li span" if data returned from the server that is assigned to it is empty, so i can calculate the right sum.
Here is how i assign data to my list:
$.get(url, function (data) {
$.each(data, function (i, info) {
$("#accordion li").text(function (y, name) {
if ($(this).is(":contains(" + info.cName + ")")) {
if ($(this).is(":has(span)")) {
$(this).children().replaceWith('<span class = "cCount">' + info.count + '</span>');
$(this).children().fadeOut(10000);
} else {
$(this).append('<span class = "cCount">' + info.count + '</span>');
}
}
countCont($(this).parent().attr('id'));
});
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
淡出后,使用 .remove()
Edit:< 将其从 DOM 中删除/strong> 作为对评论的回应,这将删除跨度(如果存在),然后添加一个新跨度:
After you fade it out, remove it from the DOM using .remove()
Edit: In response to the comment, this will remove the span if it exists then add a new one on: