2010-04-14 4 views
3

Désolé si cette question est d'un engourdissement facile, mais je suis un peu nouveau pour JQuery et j'ai un délai serré.JQuery: Sélecteur qui contient du texte, mais n'en contient pas d'autres

Je cherche un sélecteur pour les éléments de zone de texte qui ont ce format:

id = "FixedName_#" 

« FixedName » sera toujours « FixedName », mais je veux seulement trouver des éléments où le # est positif. Donc, je voudrais trouver "FixedName_1", et "FixedName_2" par exemple, mais passer "FixedName_-1" et "FixedName_-2".

Merci!

Mise à jour a fini par aller avec quelque chose comme ça (modifié mon code réel pour l'affichage ici, donc pas sûr si cela fonctionne comme indiqué):

$("input[id*='FixedName_']").each(function() { 
    if ($(this).attr("id").charAt(10) == "-") { 
     //Do something. 
    } else{ 
     //Do something else. 
    } 
}); 

Répondre

2

Je ne suis pas sûr que vous pouvez le faire avec un sélecteur. Ce que je ferais est de sélectionner tous les éléments qui ont une carte d'identité en commençant par FixedName_ comme ceci:

$("[id|=FixedName_#]") 

Ensuite, vous pouvez boucle à travers les résultats et d'examiner la valeur après la #.

EDIT: Essayez ceci:

$("[id^=FixedName_#]").each(function(){ 

var controlNum = parseInt(this.id.replace('FixedName_#','')); 
    if (controlNum >= 0){ 
    //...... 
    } 
}); 
+0

J'aime cette solution la meilleure depuis que je n'aurai pas besoin d'inclure du code regex supplémentaire. Pouvez-vous utiliser des sélecteurs sur les sélecteurs au lieu de faire défiler les résultats? Par exemple, je voudrais avoir une variable qui recueille tous les éléments "FixedName_", puis exécute un sélecteur sur cette variable pour sélectionner uniquement ceux avec des caractères "-"? – Ocelot20

1

Après avoir ajouté this attribute selector, vous pouvez le faire:

$("*:regex(id, ^FixedName_\\d+$)") 

Correspondra également FixedName_0.

0

Vous pourriez essayer d'ajouter une classe de "FixedName", puis en ajoutant un rel du nombre pour que vous puissiez utiliser: if ($ ('FixedName.'). attr (« rel »)> 0) {...}

1

Ce stockés les éléments que leur carte d'identité ne contient pas - signe

var elems = $('input:not([id*=-])'); 

alert(elems.size()); 
0

Est-il possible le code qui génère les zones de texte pourraient mettre attributs de classe comme class = "pos" itive/negative "basé sur la valeur de l'identifiant? Pour pouvoir sélectionner $ ('. Positive') ...

Questions connexes