2013-03-09 55 views
1

让我们来看看下面的代码:jQuery的:清单元素数对元素的总数

<ul> 
    <li>What is jQuery?</li> 
    <li>What is HTML?</li> 
    <li>What is CSS</li> 
</ul> 

我希望能够做的是回答每个问题之后追加(进入另一个DIV)这种文本:问题1/3,问题2/3和问题3/3 ...

我知道length()计算匹配元素的总数,以便给我数字“3”后面的“/”但我如何显示当前问题的编号?我知道这是与index()有关,但我不确定如何做到这一点。

谢谢!

回答

1

我建议:

var size = $('li').length; 
$('li').each(function(i){ 
    $('<div />', {'text' : 'Question ' + (i+1) + '/' + size}).appendTo(this); 
}); 

JS Fiddle demo

+0

'我'是基于零的,你需要添加1. – Barmar 2013-03-09 01:17:41

+0

是的,当我把小提琴放在一起时,我记得和编辑过。但是,谢谢! – 2013-03-09 01:20:21

+0

非常感谢,这正是我一直在寻找的! – user2150463 2013-03-09 01:40:46

0

演示:http://jsfiddle.net/tGLQk/1

使用each

HTML

<ul> 
    <li>What is jQuery?</li> 
    <li>What is HTML?</li> 
    <li>What is CSS</li> 
</ul> 

JS

var count = $("ul li").length; 
$("ul li").each(function(key,val){ 
this.innerHTML += " " + (key+1) + "/"+count; 
}); 
+0

并不能保证'each'的顺序是正确的。 – Dave 2013-03-09 01:22:04

+0

@Dave - 证据? – 2013-03-09 01:23:06

+0

http://stackoverflow.com/questions/9843142/change-in-order-for-each-in-firefox-and-chrome – Dave 2013-03-09 01:31:07

-1

有没有保证.each会以正确的顺序,但你可以做到这一点与CSS。看到这个捣鼓一个例子:http://jsfiddle.net/NCzsG/

(注意,如果你有一个以上的列表中,你需要使用.each通过每个ul迭代的li s各自一个中运行此)

+0

太棒了,我不知道可以通过CSS来完成! – user2150463 2013-03-09 01:44:19

+0

只有柜台。就我所知,总数仍然需要JavaScript给出或写入HTML。 – Dave 2013-03-09 01:46:31