2009-10-08 7 views
1

J'ai besoin de hepl pour trouver un sélecteur pour jQuery.jQuery sélecteur enquête

J'ai ces zones de texte:

<input type="text" name="text[1]" value="1,2,3"> 
<input type="text" name="text[2]" value="1,8,9"> 
<input type="text" name="text[3]" value="7,4,3"> 

j'ai besoin pour chacun de ces champs de saisie faire une recherche et trouver si la valeur = 1 exist.

je besoin d'aide au sélecteur (quelque chose comme $(input[name=text[]]).each())

Je ne pense pas que je ne veux pas utiliser $(input[name^='text']).each(), il est sûr parce que le reste de mon code. Y a-t-il un meilleur moyen?

Quelqu'un peut-il aider?

+0

Y at-il un élément parent, vous pourriez travailler? par exemple. si elles sont toutes dans un div, vous pouvez faire $ ("# container input [name^= 'text'")). –

+0

je peux créer un conteneur si nécessaire.N'a jamais pensé à cela.Merci –

Répondre

0

Pourquoi ne pas faire:

$('input[name="^text["]').filter('[name$="]"]') 

Je ne sais pas si vous serez en mesure de le rendre plus précis que cela avec l'aide d'une fonction pour le filtre. Je serais probablement d'accord avec le nom juste commence par le texte et assurez-vous d'utiliser des identifiants différents ailleurs.

+0

Merci.J'ai pas utilisé de filtre avant.Alors je vais tester le conduire –

2

J'utilise une classe d'espace réservé ainsi:

<input class="myselector" type="text" name="text[1]" value="1,2,3"> 
<input class="myselector" type="text" name="text[2]" value="1,8,9"> 
<input class="myselector" type="text" name="text[3]" value="7,4,3"> 

Ensuite, il est juste une question de:

$(input.myselector).each() 
0

Utilisez map() avec quelque chose comme:

$("input[type=text]").map(function() {if ($(this).val() == 1) return $(this)}) 
2

les envelopper dans un conteneur:

<div id="container"> 
    <input type="text" name="text[1]" value="1,2,3"> 
    <input type="text" name="text[2]" value="1,8,9"> 
    <input type="text" name="text[3]" value="7,4,3"> 
</div> 

Et sélectionnez-les avec, comme ceci.

$("#container > input").each(function(i, element){ 
    $element = $(element); 
    if($element.val().indexOf('1') >= 0){ 
     $element.css("background-color", "yellow"); 
    } 
}); 

ou même écrire un sélecteur personnalisé comme celui-ci:

$.extend($.expr[':'], { 
    contains1: function(e) { 
     return $(e).val().indexOf('1') >= 0; 
    } 
}); 

$("#container > input:contains1").css("background-color", "yellow"); 
+0

J'aime l'exemple de sélection du client ... +1 – Lazarus

+0

Ouais, le sélecteur personnalisé sont assez nappe. Consultez http://stackoverflow.com/questions/182630/jquery-tips-and-tricks pour plus de conseils et astuces –