Jquery按索引访问每个列表项

时间:2014-05-13 22:46:49

标签: javascript jquery

我正在关注Jquery的初学者视频教程并且刚刚完成了这段代码:(内部.ready())

$('ul li ').each(function(e){

    $this().css{background' ,'red'}
    $this().append(e);

});

现在e prints each li index,有人可以解释一下如何为每个项目获取索引,因为它不是循环。

2 个答案:

答案 0 :(得分:2)

嗯,.each()函数 是一个循环。它几乎字面上写着“对于每个名为'ul li'的项目,做点什么。”

parantheses中的字母'e'是您的实际索引号。当您使用.each循环时,该函数会收集正在查看的内容的数量并继续前进,直到不再有。

要简单地显示索引的编号,您可以说:

$('ul li').each(function(i){  //I like to use the letter 'i' which more literally stands for 'index'
    console.log(i);
});

这将在您的控制台中显示为:

0
1
2
3
4
5

假设你有六个元素。

现在,您对$this的使用毫无意义。当正确使用它时,它被写为$(this),这意味着“这个元素”,因为我们在一个遍历每个列表元素的函数中,它将采用它当前正在查看的列表元素,然后执行您想要的任何操作。

如果您希望所有列表元素的背景颜色为红色(就像您想要的那样),您可以写道:

$('ul li').each(function(i){  
    $(this).css({"background": "red"});
});

我不确定你要对.append函数做什么。通过这样做,您实际上是为每个列表元素向列表元素添加一个列表元素!

你能解释一下你想要完成什么吗?

<强>更新 正如您的标题所示“按索引访问每个列表项”,如果您想访问特定列表项而不是所有列表项,则可以使用函数.eq()。假设您有6个列表元素,并且您希望第四个元素具有红色背景。所有你必须这样做:

$('ul li').eq(3).css({"background":"red"});

请记住,索引编号从零开始,因此第四个编号为#3。 (当然,这在CSS中会更快更简单!)

答案 1 :(得分:1)

实际上,.each()循环/迭代器。它将迭代匹配的每个元素。例如:所有ul li s。

它将为每个匹配的代码运行代码,并且可以使用$(this)

访问DOM元素

请参阅文档:http://api.jquery.com/jquery.each/