Obtenir un élément par index dans jQuery


117

J'ai une liste non ordonnée et l'index d'une libalise dans cette liste. Je dois obtenir l' liélément en utilisant cet index et changer sa couleur d'arrière-plan. Est-ce possible sans boucler la liste entière? Je veux dire, y a-t-il une méthode qui pourrait atteindre cette fonctionnalité?

Voici mon code, qui, je crois, fonctionnerait ...

<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
Les deux façons dont vous l'utilisez renvoient des éléments dom plutôt que des objets jQuery afin que l'appel à .css ne fonctionne pas sur eux. La réponse de Darius ci-dessous en utilisant l'eq est ce que vous voulez.
Richard Dalton

Réponses:


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

Les objets DOM n'ont pas de cssfonction, utilisez le dernier ...

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

docs:

.get(index) Renvoie: Element

.eq(index) Renvoie: jQuery

  • Description: réduisez l'ensemble des éléments correspondants à celui de l'index spécifié.
  • Voir: https://api.jquery.com/eq/

19

Vous pouvez utiliser la .eq()méthode de jQuery pour obtenir l'élément avec un certain index.

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


1

Il existe une autre façon d'obtenir un élément par index dans jQuery en utilisant 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>

Il existe d'autres sélecteurs que vous pouvez utiliser avec jQuery pour correspondre à tout élément dont vous avez besoin.


-1

Vous pouvez ignorer la jquery et simplement utiliser le balisage de style CSS:

 <ul>
 <li>India</li>
 <li>Indonesia</li>
 <li style="background-color:#343434;">China</li>
 <li>United States</li>
 <li>United Kingdom</li>
 </ul>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.