2013-04-30 52 views
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) 
}); 

回答

1

你是总是指相同的清单...你应该使用这个:

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

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

+0

谢谢,正是我需要的! – Yunowork 2013-05-01 18:17:42

+0

在所有给出的答案中,平均而言,这是所有浏览器中最慢的答案。只是为了感兴趣。 – Xotic750 2013-05-01 19:51:51

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

您是否在寻找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); 
    }) 
}); 
  1. <li>
  2. 每个<ul>
  3. 计数遍历每个<a><ul>内追加一条数到它
+0

就这么你知道,从jQuery 1.4开始[html函数](http://api.jquery.com/html/#html-functionindex--oldhtml)可以像这样重写:'$(this ).html(函数(i,html){返回html +'/'+ num_li;});' – Mottie 2013-04-30 14:58:27

+0

@Mottie感谢您为页面添加有用信息(y)! – Ejaz 2013-04-30 16:09:14

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

+0

谢谢Rahul,工作正常! – Yunowork 2013-05-01 18:17:58

1

使用该代码:

$(".list_slides_pagination").each(function() { 
    list_slides_count = $(this).find("li").length; 
    $(this).find('a').each(function(){   
     $(this).append("/" + list_slides_count); 
    }) 
}); 
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,不只是我的,所以我们有一个性能向导。

+0

那么,这将是因为我不会使用jQuery这个,但香草的JavaScript(思考forEach),所以我直接翻译它。但是你可以扩展为什么一个循环是一个坏主意。 – Xotic750 2013-04-30 14:32:33