2015-11-02 136 views
1

我有以下列表:迭代通过列表元素 - jQuery的

<ul class="my-list"> 
    <li> 
    <ul> 
     <li>Now</li> 
     <li><img src="image.png"/></li> //change this 
     <li>25˚</li> //change this 
    </ul> 
    </li> 
    <li> 
    <ul> 
     <li>12 AM</li> 
     <li><img src="image.png"/></li> 
     <li>30˚</li> 
    </ul> 
    </li> 
</ul> 

我想通过这个列表迭代和修改第二“UL”里面的“礼”要素(IMG SRC,小时等) 。

我做了以下的jQuery代码:

 if($(this).attr('class')=='my-list'){ 
      $("li").each(function(){ 
       $("ul").each(function(){ 
        $("li:eq(0)").html("Test"); 
        $("li:eq(1)").html("test2"); 
        $("li:eq(2)").html("test3"); 
       }); 
      }); 
     } 

我想使用的代码清单相同的代码(这只是其中的一部分),但我的jQuery代码不工作我无法弄清楚为什么。 有人可以帮我吗?谢谢。

+0

这是什么?显示您的代码的完整上下文 – charlietfl

回答

0

你应该重复li元素与当前上行的后裔匹配和目标仅次于李:

if ($(this).attr('class') == 'my-list') { 
    // this only target second element of 'li' 
    $(this).children().eq(1).each(function() { 
     // then find ul element 
     $(this).find('ul').each(function() { 
      // change the content by using context 
      $("li:eq(0)", this).html("Test"); 
      $("li:eq(1)", this).html("test2"); 
      $("li:eq(2)",this).html("test3"); 
     }); 
    }); 
} 

DEMO - 名单上点击查看更改

+0

它的工作,谢谢!现在我明白我的错在哪里了。 – VLun

0

即使您正在遍历匹配的元素,您并未使用它们来缩小其子节点。试试这个

$('.my-list ul').each(function(index, elem){ 
    var innerList = $(elem).children('li'); 
    innerList.eq(0).html('Test') 
    innerList.eq(1).html('Test2') 
    innerList.eq(2).html('Test3') 
});