<form id="foo">
<input></input>
<input></input>
<input></input>
</form>
Je veux faire:
document.getElementById("foo").getElementsByTag("input")[1];
Mais dans jQuery. Je veux sélectionner un certain objet sous #foo par un index.
Ceci est ma première supposition sur la façon de procéder:
$('#foo input[1]').val("BlahBlah");
Je pense que ce serait la même chose en CSS aussi.
7 réponses
Vous pouvez le faire de cette façon:
$('#foo input').eq(1).val("BlahBlah");
Cela vous donnera la deuxième entrée. Si vous voulez le premier, changez le 1 en 0. La fonction .eq()
est basée sur 0.
Dans jQuery, deux méthodes sont définies pour sélectionner et utiliser des éléments d'une liste (objets DOM).
En utilisant:
var list = $("#foo");
Vous captureriez l'intégralité de #foo
. Si vous recherchez la simplicité, vous pouvez obtenir les enfants (c'est-à-dire les champs de saisie) en utilisant var children = list.children();
Mais si vous voulez quelque chose qui ressemble un peu plus à findElementsByTag, vous pouvez utiliser var children = list.find('input');
(lequel bien sûr pourrait être un un liner, mais généralement vous voulez réutiliser la liste entière aussi)
Pour obtenir le premier et le dernier élément d'une certaine liste d'enfants, il existe des fonctions prédéfinies:
var first = children.first();
var last = children.last();
Pour trouver un élément -nth, vous pouvez utiliser http://api.jquery.com/eq/ ou http://api.jquery.com/nth-child-selector/
Donc, vous obtiendrez (notez que cela fonctionne comme un tableau avec un index basé sur 0)
var second = children.eq(1);
Si vous aimez plus le style de sélecteur CSS, vous pouvez également essayer (notez l'index basé sur 1)
var second_b = $("#foo input:nth-child(2)");
$('#foo :input').eq(1).val('BlahBlah')
Utilisez la pseudo-classe nth-child (n) comme ceci ...
$("#foo input:nth-child(0)").val("BlahBlah");
$("#foo input:nth-child(1)").val("BlahBlah");
.
.
.
$("#foo input:nth-child(n)").val("BlahBlah");
Vous pouvez utiliser le sélecteur eq ():
$('#foo input:eq(1)').val("BlahBlah");
Vous pouvez utiliser le sélecteur eq
. Il reçoit un index de base zéro:
$('#foo input:eq(1)').val('a value');
Je dirai :
$($('#foo input')[1]).val("BlahBlah");
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.