2010-10-11 4 views
2

En HTML:Comment sélectionner un élément par son attribut lorsque la valeur est un tableau

<select name=site[new][fw][version]></select> 

En jQuery, j'ai essayé:

var fwvs=$('select[name=site\\[new]\\[fw]\\[version]]') 

Mais fwvs.length retour 0. Qu'est-ce que Je fais mal?

Merci

+0

personne ne se soucie valide html? – Reigel

+0

@Reigel - Généralement, non ':)'. Il est courant d'avoir '[]' dans l'attribut 'name' - je suis certain que PHP * l'exige * pour que les champs à valeurs multiples remplissent correctement ses variables. Je suis avec vous si vous faites référence aux citations manquantes, je les ai ajoutées sur mon échantillon. – Kobi

+0

ceci n'est pas valide en HTML5? J'ai cru comprendre que les valeurs d'attribut doivent être entourées de guillemets seulement si elles contiennent des espaces ... – fabjoa

Répondre

3

Essayez ceci:

$('select[name="site[new][fw][version]"]') 

Les sélecteurs d'attributs peuvent prendre des arguments sous forme de chaînes, entre guillemets doubles (simples ou doubles, même que JavaScript). Habituellement, ils ne sont pas utilisés, mais ils sont utiles dans ce cas.

Exemple de travail: http://jsfiddle.net/kobi/32SNS/

+0

Cela ne fonctionne pas. – Marko

+0

@ Marko Ivanovski - semble bien fonctionner pour moi, sur Firefox, Chrome et IE8. – Kobi

+0

Cela a fonctionné! En outre, l'échappement triple (\\\\) a fonctionné quand le double (\\\) a échoué pour moi. Le double fonctionne correctement lorsque le tableau ne contient aucun autre tableau, c'est-à-dire, le site [nouveau], mais après cela, il semble que l'échappement triple doit être utilisé. Mais merci Kobi, votre chemin a bien fonctionné! Je vais le marquer comme répondu dès que SO me laisser faire :) – fabjoa

2

Vous devez échapper à la fois l'ouverture ([) et de fermeture (]) entre parenthèses. Vérifiez jquery selectors docs.

An example

+0

comme: var fwvs = $ ('select [nom = site \\\ [nouveau \\\] \\\ [fw \\ \] \\\ [version \\\]] ') –

+0

Comme je l'ai commenté ci-dessus, cela n'a pas fonctionné pour moi, j'ai dû utiliser \\\ à la place – fabjoa

Questions connexes