5

jQueryを使用して、ネストされた各ul.itemを調べ、LIの数をカウントし、そのページの親span.someClassでそのサイズ/長さを返すにはどうすればよいですか?

<ul>
  <li><span class="someClass">3</span>
    <ul class="item" style="display:none">
      <li>count me</li>
      <li>count me</li>
      <li>count me</li>
    </ul>
  </li>
  <li><span class="someClass">1</span>
    <ul class="item" style="display:none">
      <li>count me</li>
    </ul>
  </li>
  <li><span class="someClass">2</span>
    <ul class="item" style="display:none">
      <li>count me</li>
      <li>count me</li>
    </ul>
  </li>
</ul>
4

7 に答える 7

5
$("ul.item").each(function() {
    // reusabilty
    var context = $(this);
    // count and populate
    context.prev(".someClass").text(context.children().length);
});

これらの要素が常に要素の直前ある場合は、呼び出しを省略.someClassしてください。その場合、フィルタリングは不要であり、不要です。prev()spanulprev

于 2012-11-21T16:54:05.247 に答える
3

これを試して、

ライブデモ

 $('.someClass').each(function(){    
     $(this).text($(this).next('ul').find('li').length);
 })​
于 2012-11-21T16:51:50.510 に答える
1

text次の方法を使用できます。

$('.someClass').text(function(){
   return $(this).next().find('li').length
})

http://jsfiddle.net/EEsRR/

于 2012-11-21T16:54:50.617 に答える
1
<html>
<head>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
         $(function() { 
            var count = 0;
            $('ul').each(function(){
                if(count != 0){

                    var len = $(this).find('li').length;

                    $(this).parent().find('.someClass').html(len);
                }
                count++;

            })  
         });

    </script>
</head>
<body>
<ul>
  <li><span class="someClass"></span>
    <ul class="item" style="display:none">
      <li>count me</li>
      <li>count me</li>
      <li>count me</li>
    </ul>
  </li>
  <li><span class="someClass"></span>
    <ul class="item" style="display:none">
      <li>count me</li>
    </ul>
  </li>
  <li><span class="someClass"></span>
    <ul class="item" style="display:none">
      <li>count me</li>
      <li>count me</li>
    </ul>
  </li>
</ul>
</body>
</html>
于 2012-11-21T17:05:01.717 に答える
0
​$("ul.item").each(function() {
    var _c = $(this);
    _c.siblings("span.someClass").html(_c.children("li").length);
});​
于 2012-11-21T16:58:32.123 に答える
0

<li>jQueryを使用してすべてのトラフをループします。

$(document).ready(function(){

  var howMany;
  // loop through every span.someClass
  $('.someClass').each(function(){
    // loop through every <li> within that span.someClass
    $('li').each(function(){
      // .index() is the current index of the $(this) object, it starts at 0, therefore .index()+1
      howMany = $(this).index()+1;
    });
    // Write your counted <li> in your <span> with .text(), manipulate the text within the <span> tags
    $(this).text(howMany);
  });
});

うまくいきましたか?

于 2012-11-21T17:04:11.907 に答える
-1
$('#yourelementid > li').length; 

これは、ループを使用する代わりに機能します

于 2014-04-02T09:39:08.680 に答える