在jQuery中按索引获取元素


117

我有一个无序列表和该列表中li标签的索引。我必须li通过使用该索引来获取元素并更改其背景颜色。是否可以不循环整个列表?我的意思是,有没有什么方法可以实现此功能?

这是我的代码,我相信它会起作用...

<script type="text/javascript">
  var index = 3;
</script>

<ul>
    <li>India</li>
    <li>Indonesia</li>
    <li>China</li>
    <li>United States</li>
    <li>United Kingdom</li>
</ul>

<script type="text/javascript">
  // I want to change bgColor of selected li element
  $('ul li')[index].css({'background-color':'#343434'});

  // Or, I have seen a function in jQuery doc, which gives nothing to me
  $('ul li').get(index).css({'background-color':'#343434'});
</script>

3
您在此处使用的两种方法都返回dom元素而不是jQuery对象,因此对.css的调用将无法在它们上进行。Darius在下面使用eq的答案就是您想要的。
理查德·道尔顿2012年

Answers:


257
$(...)[index]      // gives you the DOM element at index
$(...).get(index)  // gives you the DOM element at index
$(...).eq(index)   // gives you the jQuery object of element at index

DOM对象没有css功能,请使用最后一个...

$('ul li').eq(index).css({'background-color':'#343434'});

docs:

.get(index) 返回:元素

.eq(index) 返回:jQuery




1

还有一种使用CSS :nth-of-type伪类在jQuery中按索引获取元素的方法:

<script>
    // css selector that describes what you need:
    // ul li:nth-of-type(3)
    var selector = 'ul li:nth-of-type(' + index + ')';
    $(selector).css({'background-color':'#343434'});
</script>

jQuery还可以使用其他选择器来匹配所需的任何元素。


-1

您可以跳过jquery,而仅使用CSS样式标记:

 <ul>
 <li>India</li>
 <li>Indonesia</li>
 <li style="background-color:#343434;">China</li>
 <li>United States</li>
 <li>United Kingdom</li>
 </ul>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.