Jquery 循环通过多个ul列表

Jquery 循环通过多个ul列表,jquery,loops,Jquery,Loops,我有多个列表,其中包含相同数量的元素: <ul id='first'> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <ul id='second'> <li>5</li> <li>6</li> <li>7</li&g

我有多个
列表,其中包含相同数量的
  • 元素:

    <ul id='first'>
      <li>1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
    </ul>
    
    <ul id='second'>
      <li>5</li>
      <li>6</li>
      <li>7</li>
      <li>8</li>
    </ul>
    
    <ul id='third'>
      <li>9</li>
      <li>10</li>
      <li>11</li>
      <li>12</li>
    </ul>
    
    
    
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 十一,
  • 十二,
  • 我想首先得到每个
    (1,5,9)的第一个
  • 元素,然后是第二个元素(2,6,10),依此类推

    我知道我可以通过
    $('#第一个li')获得
    的所有
  • 元素。每个(…)
    。是否有类似的命令按上述顺序获取
  • 元素?

    您可以使用(或)方法和方法

    // iterate ove li elements
    $('#first li').each(function(i) {
      console.log(
        // get text from li
        $(this).text(),
        // get li from second based on index and get text
        $('#second li').eq(i).text(), //  you can also use `$('#second li:eq(' + i + ')')`
        // get li from third based on index and get text
        $('#third li').eq(i).text());
    });
    
    //迭代li元素
    $(#第一个li')。每个(函数(i){
    console.log(
    //从李那里获取文本
    $(this).text(),
    //基于索引从第二个获取li并获取文本
    $('#second li').eq(i).text(),
    //根据索引从第三方获取li并获取文本
    $('#third li').eq(i).text();
    });
    
    
    
    • 一,
    • 二,
    • 三,
    • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 十一,
  • 十二,
  • 我会成功的

    jQuery可能有
    .child()
    方法用于直接子对象,我不记得了

    更口头的是:

    $('#full .first .selector, #second .full .selector, .etc');
    

    由于jQuery接受了所有数量的CSS选择器,但随着选择器数量的增加,它的可读性可能会越来越差,但您始终可以先构建它。

    您必须使用
    :eq
    在列表中查找必要的元素

    $(文档).ready(函数(){
    var uls=$(“ul”);
    //获取所有uls中lis的长度
    变量长度=$.map(uls,函数(ul){
    返回$(ul).find('li').length;
    });
    //获取最大长度以对其进行迭代。
    var maxLen=Math.max.apply(null,长度);
    //在maxLen上循环并获得li的值
    
    对于(var i=0;i获取max li子级的计数,然后相应地迭代

    var count=0;
    
    $("ul").each(function(){
    
       var num = $(this).children("li").length;
       if(num > count)
       {
         count = num;
       }
    
    });
    
    
    
    for (var i=1 ; i<=count ; i++)
    {
    
      $("ul").each(function(){
    
    
        alert($(this).children().eq(i).text());
    
      });
    }
    
    var计数=0;
    $(“ul”)。每个(函数(){
    var num=$(this).children(“li”).length;
    如果(数值>计数)
    {
    计数=num;
    }
    });
    
    对于(var i=1;如果任何
    ul
    以后有超过4个
    li
    @Rajesh:我刚刚为这个问题添加了答案……我有多个
      列表,包含相同数量的
    • 元素:只是一个问题。
      li:eq(2)
      会不会比
      更好。find('li')。eq(2)
      ?我的意思是第二种方法将获取所有
      li
      s,然后过滤掉第二个元素。@Rajesh:
      :eq()
      是一个jQuery伪类选择器……不是css选择器……它是在jQuery库中定义的……因此我认为两者在内部的工作方式相同:)不确定……如需更多信息,请查看图书馆。这将只提供第一个li。请阅读OP的要求。另外,
      $('ul')。查找('li:first'))
      就可以了。不需要
      $。每个
      @Rajesh:哦,是的,我没有注意到,谢谢。更正了代码。嗨。你能解释为什么不是每个循环,或者在每个循环上使用map的优点吗。只要问两个都可以。实际上,你计算最大长度的方法更好,但我这样做只是为了以防万一我们需要所有长度。@yoyoyo谢谢。此外,为了便于参考,请勾选此项。与此问题无关,只需比较
      Math.max.apply
      vs
      for
      var count=0;
      
      $("ul").each(function(){
      
         var num = $(this).children("li").length;
         if(num > count)
         {
           count = num;
         }
      
      });
      
      
      
      for (var i=1 ; i<=count ; i++)
      {
      
        $("ul").each(function(){
      
      
          alert($(this).children().eq(i).text());
      
        });
      }