2012-03-09 11 views
0

私はかなり単純だと思うことをしようとしています。ページの読み込み時に、ulの子をすべてカウントし、その数値を文字列として表示したいとします。ここで私はこれまで持っているコードです:jQuery:子供を数えて文字列として表示

jQueryの

$('ul').load(function() { 
    var txt = "1" + "/" + $("> *", this).length; 
    $(".counter").html(txt); 
}); 

HTML

<ul> 
    <li><img alt="Photo" src="images/photo.png" /></li> 
    <li><img alt="Photo" src="images/photo.png" /></li> 
    <li><img alt="Photo" src="images/photo.png" /></li> 
</ul> 

<p class="counter"></p> 

したがって、この例では、ページが読み込まれたら、p.counterは「文字列が含まれますが1/3 "となる。私がここで間違っていることを確かめない。

+2

'$(ul)'は '$( 'ul')でなければならず、' load'イベントはリスト要素に対してトリガされません。単に 'ready'イベントハンドラで計算を行います。 –

+0

それはうまくいった、ありがとう。 – colindunn

答えて

2

文書のアイテムを準備しているのはなぜですか?

$(document).ready(function() { 
    var txt = "1"+ "/" + $("ul li").length; 
    $(".counter").html(txt); 
}); 

例:http://jsfiddle.net/jtbowden/But8C/

+0

もちろん...私はなぜそれについて考えるのか分からない。ありがとうございました! – colindunn

0

まず、私はあなたが特定のユニークなULを意味すると仮定します。その場合、ページに他のulが表示された場合の競合を避けるために、IDを与えることをお勧めします(下の「ulid」としてリストされています)。カウンターでも同じことをしたいかもしれませんが、他のクラスでそのクラスを使用していないと確信できる場合は、うまくいくはずです。

$(document).ready(function() { 
    var txt = "1/" + $("#ulid").children().length() 
    $("p.counter").html(txt); 
} 
+0

私の場合は、ページ上で唯一の 'ul'となるので、クラスを使わずに立ち去ることができます。 – colindunn

関連する問題