2

我正在尝试一些简单的事情(?),计算列表项的数量并将其附加到父 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)
});
4

6 回答 6

2

像这样的东西应该工作:

$(".list_slides").each(function () {
  var list_slides = $(this).find(".list_slides_pagination li a");
  list_slides.each(function () {
    $(this).append("/" + list_slides.length);
  });
});
于 2013-04-30T14:26:50.750 回答
1

你在寻找这样的东西吗?. 如果是,则使用以下方法

$(".list_slides_pagination").each(function () {
    var num_li = $('li', $(this)).length
    $('li a', $(this)).each(function () {
        $(this).html($(this).html() + '/' + num_li);
    })
});
  1. 对于每个<ul>
  2. 计算<li>它的数量
  3. 遍历其中的每个并将该计数附加到 <a><ul>
于 2013-04-30T14:26:54.170 回答
1

你总是指的是同一个列表......你应该使用这个:

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

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

于 2013-04-30T14:27:10.617 回答
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)
 });

工作 JSFIdle

于 2013-04-30T14:27:17.470 回答
1

使用该代码:

$(".list_slides_pagination").each(function() {
    list_slides_count = $(this).find("li").length;
    $(this).find('a').each(function(){          
        $(this).append("/" + list_slides_count);
    })
});
于 2013-04-30T14:29:06.247 回答
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,而不仅仅是我的,所以我们有一个性能指南。

于 2013-04-30T14:29:10.563 回答