2013-03-09 36 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