Obtener un elemento por índice en jQuery


117

Tengo una lista desordenada y el índice de una lietiqueta en esa lista. Tengo que obtener el lielemento usando ese índice y cambiar su color de fondo. ¿Es esto posible sin recorrer la lista completa? Quiero decir, ¿hay algún método que pueda lograr esta funcionalidad?

Aquí está mi código, que creo que funcionaría ...

<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
Las dos formas en que está utilizando devuelven elementos dom en lugar de objetos jQuery, por lo que la llamada a .css no funcionará en ellos. La respuesta de Darius a continuación usando eq es lo que quieres.
Richard Dalton

Respuestas:


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

Los objetos DOM no tienen cssfunción, use el último ...

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

docs:

.get(index) Devoluciones: Elemento

.eq(index) Devoluciones: jQuery

  • Descripción: reduce el conjunto de elementos coincidentes al que está en el índice especificado.
  • Ver: https://api.jquery.com/eq/

19

Puede usar el .eq()método de jQuery para obtener el elemento con un índice determinado.

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


1

Hay otra forma de obtener un elemento por índice en jQuery usando la pseudoclase CSS :nth-of-type:

<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>

Hay otros selectores que puede usar con jQuery para que coincida con cualquier elemento que necesite.


-1

Puede omitir jquery y simplemente usar el etiquetado de estilo CSS:

 <ul>
 <li>India</li>
 <li>Indonesia</li>
 <li style="background-color:#343434;">China</li>
 <li>United States</li>
 <li>United Kingdom</li>
 </ul>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.