2009-12-28 1 views
0

Il y a des éléments d'entrée de nombreux ID qui sontComment sélectionner les éléments d'entrée suivants et comment obtenir une partie de l'ID à l'aide de Jquery?

question5, question6, question7

, ..., comment sélectionner ces éléments d'entrée en utilisant Jquery?

Je ne veux pas dire $('#question5'), je veux dire de sélectionner le groupe d'entre eux.

Comment obtenir le dernier numéro comme 5,6,7, ... en utilisant Jquery?

+0

Ces éléments d'entrée sont créées dynamiquement. – Steven

Répondre

1

Essayez ceci:

$("input[id^='question']") 

Il correspondra à des éléments d'entrée qui ont un attribut id qui commencent par question.

Une fois que vous avez les éléments, vous pouvez simplement faire une sous-chaîne javascript sur eux pour trouver le numéro:

$("input[id^='question']").each(function() { 
    alert(this.id.substr(8)); 
}); 
+0

Ces éléments d'entrée sont créés dynamiquement. – Steven

+0

C'est bien, ça ne fera pas de différence. Tant qu'ils font partie du DOM, les sélecteurs jQuery les trouveront. – zombat

0

La solution est plus facile sans doute de donner les éléments d'une classe commune que vous pouvez sélectionner:

<input id="question5" class="questions"> 
<input id="question6" class="questions"> 
<input id="question7" class="questions"> 

Vous pouvez ensuite sélectionner tous avec $(".questions") et vous pouvez obtenir leur id: s avec la fonction jQuery .attr().

2

Vous pouvez sélectionner tous les éléments dont input ses id commence par 'question', puis vous pouvez extraire le nombre, par exemple .:

$('input[id^=question]').blur(function() { 
    var number = +this.id.match(/\d+/)[0]; 
}); 

juste faire attention parce que si l'expression régulière ne pas matchs, il va lancer une TypeError, une version plus sûre serait quelque chose comme ceci:

$('input[id^=question]').blur(function() { 
    var match = this.id.match(/\d+/); 
    var number = match ? +match[0] : 0; // default zero 
}); 
+0

Ces éléments d'entrée sont créés dynamiquement. – Steven

+0

Qu'est-ce qui peut interférer avec l'exécution de ce code Jquery? – Steven

0

ajouter une classe à chaque champ d'entrée.

<input class='questions'> 
$('.questions') 

en utilisant la méthode de sélection de la classe fera l'affaire

en fonction de ce que vous essayez de faire, à l'aide du sélecteur jQuery pour la classe, vous pouvez ajouter un .each à itérer à travers le réseau, ainsi.

$('.questions').each(function (i){ 
    //i = the current question number 
    alert('this is question '+i); 
}); 

Aussi, est-here d'autres informations sur la méthode de .each dans jQuery