Ottieni un elemento per indice in jQuery


117

Ho un elenco non ordinato e l'indice di un litag in tale elenco. Devo ottenere l' lielemento usando quell'indice e cambiare il suo colore di sfondo. È possibile senza ripetere l'intero elenco? Voglio dire, esiste un metodo che potrebbe ottenere questa funzionalità?

Ecco il mio codice, che credo funzionerebbe ...

<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
I due modi in cui stai utilizzando restituiscono elementi dom anziché oggetti jQuery, quindi la chiamata a .css non funzionerà su di essi. La risposta di Dario di seguito usando l'eq è ciò che desideri.
Richard Dalton

Risposte:


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

Gli oggetti DOM non hanno cssfunzione, usa l'ultimo ...

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

docs:

.get(index) Restituisce: Element

.eq(index) Restituisce: jQuery


19

Puoi usare il .eq()metodo di jQuery per ottenere l'elemento con un certo indice.

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


1

C'è un altro modo per ottenere un elemento per indice in jQuery usando la :nth-of-typepseudo-classe CSS :

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

Ci sono altri selettori che puoi usare con jQuery per abbinare qualsiasi elemento di cui hai bisogno.


-1

Puoi saltare il jquery e usare semplicemente il tagging in stile CSS:

 <ul>
 <li>India</li>
 <li>Indonesia</li>
 <li style="background-color:#343434;">China</li>
 <li>United States</li>
 <li>United Kingdom</li>
 </ul>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.