6
votes

JQuery, récupération de la liste des chaînes d'identité de tous les éléments avec des identifiants qui "commencent par" une chaîne?

Je ne suis pas un gourou JavaScript car je fais plus de travail côté serveur, alors je me débattre avec cela. J'ai trouvé des morceaux et des morceaux de comment faire cela. Fondamentalement, j'ai une série d'éléments qui ont des identifiants commençant par la chaîne "tagrow_" et je dois récupérer une liste de tous les identifiants d'élément réels, car je n'ai pas besoin que l'élément, mais aussi l'identifiant de l'élément comme je dois analyser la fin unique pour chacun sur le côté serveur pour déterminer ce qu'elle correspond.

J'ai trouvé le code ci-dessous pour obtenir tous les éléments mais je ne suis pas sûr de ce que cela revient aussi loin qu'une liste ou quoi, si quelqu'un peut offrir des conseils. Comment retourner une liste des noms d'identification de chaîne que je l'apprécierais. Merci

Edit: Je dois en fait faire cela avec un champ de saisie radio, c'était par erreur, je mets un div dans mon propre exemple. Cela fonctionne bien pour un div mais ne fonctionne pas correctement pour une entrée radio comme ci-dessous: xxx

http://jsfiddle.net/fd7fp/3/


0 commentaires

5 Réponses :


2
votes
$("div[id^='tagRow_']").each(function() {    
    alert(this.id);
});

0 commentaires

1
votes

Vous pouvez également obtenir le numéro du côté client aussi.

$("div[id^='tagRow_']").each(function() {

   var id = this.id,
       idNumber = id.replace(/\D+/, '');

   // idNumber contains the digits that were in the id

});


0 commentaires

19
votes

2 commentaires

En fait, j'essaye avec un champ de saisie, j'ai commis une erreur en op, semble que cela ne fonctionne pas de la même manière pour une raison quelconque d'une division


@Rick Essayez ceci jsfiddle.net/loktar/mcycf/4 votre recherche de chiffres, donc Si vous laissez _DDD à la fin, il ne trouvera pas les chiffres, donc dans le violon, j'ai changé le _DDD en chiffres.



0
votes

qui retournera une liste d'éléments DOM correspondants (comme des objets JQuery). Donc, vous devrez la boucler et mettre les identifiants dans un tableau séparé.

var matching_els = $("div[id^='tagRow_']"), ids = [];
for(var i=0; i<matching_els.length; i++){
  ids.push(matching_els[i].attr("id");
}
// send ids back to server


1 commentaires

Vous avez un manquant) après .attr ("id")



19
votes

Essayez ce qui suit:

var ids = $("div[id^='tagRow_']").map(function() {
    return this.id;
}).get();


3 commentaires

Arh !! Il y a une différence entre $ (elem) .map (rappel (index, domelement)) et jquery.map (tableau, rappel (elemofarray, indexanarray)): sur la page $ (elem) .map () [API.JQuery.com / Carte /] Il est indiqué: «Passez chaque élément dans l'ensemble correspondant à la fonction de la fonction, produisant un nouvel objet JQuery contenant les valeurs de retour. [...] Si vous souhaitez traiter un tableau uni ou un objet, utilisez la jQuery. carte () à la place. "


+1 Je préfère cette solution, car vous n'utilisez pas de fermetures pour obtenir les identifiants.


Cons IDS = $ ('[id]'). Obtenez (). map (elem => elem.id);