分别计算每个列表的列表项数并追加

时间:2013-04-30 14:19:38

标签: javascript jquery tags

我正在尝试简单的事情(?),以计算列表项的数量并将其附加到父div中的列表中。问题是它始终采用最后一个值,因为你可以看到第一个列表有4个项目,并说4/2这应该是4/4 ..如何解决这个问题?

由于

演示:http://jsfiddle.net/tZLG9/

代码:

$(".list_slides_pagination li a").each(function() {
    list_slides_count = $(".list_slides").find(".list_slides_pagination").length;
    $(this).append("/" + list_slides_count);
    console.log(list_slides_count)
});

6 个答案:

答案 0 :(得分:2)

这样的事情应该有效:

$(".list_slides").each(function () {
  var list_slides = $(this).find(".list_slides_pagination li a");
  list_slides.each(function () {
    $(this).append("/" + list_slides.length);
  });
});

答案 1 :(得分:1)

您是否正在寻找 something like this? 。如果是,则使用以下方法

$(".list_slides_pagination").each(function () {
    var num_li = $('li', $(this)).length
    $('li a', $(this)).each(function () {
        $(this).html($(this).html() + '/' + num_li);
    })
});
    每个<ul>
  1. 计算<li>它的数量
  2. 遍历<a>内的每个<ul>并将该计数附加到其中

答案 2 :(得分:1)

你总是指同一个名单......你应该使用这个:

$(this).closest(".list_slides_pagination").find("li").length;

示例:http://jsfiddle.net/scaillerie/tZLG9/3/

答案 3 :(得分:1)

使用以下代码

$(".list_slides_pagination li").each(function() {
            list_slides_count =     $(this).parent().find("li").length;
            $(this).append("/" + list_slides_count);

            console.log(list_slides_count)
 });

Working JSFIddle

答案 4 :(得分:1)

使用该代码:

$(".list_slides_pagination").each(function() {
    list_slides_count = $(this).find("li").length;
    $(this).find('a').each(function(){          
        $(this).append("/" + list_slides_count);
    })
});

答案 5 :(得分:1)

这应该在jquery中适用于你(虽然它可能不是最简洁的jquery语法)

$(".list_slides_pagination").each(function (index1, element) {
    var items = $("li a", element),
        count = items.length;

    items.each(function (index2, item) {
        item.textContent = item.textContent + "/" + count;
    });
});

jsfiddle

这是我原来的javascript思想,我将其翻译成上面的内容。为了演示@roasted

Array.prototype.forEach.call(document.querySelectorAll(".list_slides_pagination"), function (element) {
    var items = element.querySelectorAll("li a"),
        count = items.length;

    Array.prototype.forEach.call(items, function (item) {
        item.textContent = item.textContent + "/" + count;
    });
});

jsfiddle

在这里,我们提供了jsperf所有解决方案,而不仅仅是我的解决方案,以便我们提供性能指南。