2009-04-13 4 views
6

J'ai besoin de reask ma vieille question, je ne devrais probablement ai demandé à 1h du matin: Pattributs non trouvé par le sélecteur d'attribut jquery

Il semble que certains attributs ne sont pas trouvés à l'aide du sélecteur d'attribut de jquery:

$("*[some=value]"); 

Jusqu'à présent, il semble que je ne peux pas utiliser l'attribut d'action de formulaire, et l'attribut src de img. Existe-t-il une liste d'attributs qui ne fonctionnent pas pour que je puisse écrire des sélecteurs personnalisés pour eux?

Merci encore!


Edit: Personne ne semble croire que certains sélectionneurs ne fonctionnent pas comme prévu. Regardez cet exemple: Sur this site (qui a jquery 1.3 sur pour firebugging) il y a une forme qui ressemble à ceci:

<form style="display: inline;" method="get" action="list"> 

(ses dans le menu déroulant « rechercher les téléchargements en cours »). Si vous ouvrez firebug et essayez ce sélecteur:

$("form[action=list]"); 

vous ne pourrez pas sélectionner le formulaire. Il n'y a rien de spécial à propos de l'attribut d'action. Idem pour le src de l'image du logo sur cette page:

<img alt="Logo" src="/p/aost/logo?logo_id=1238551994"/> 

Le sélecteur qui ne fonctionne pas est:

$("img[src=/p/aost/logo?logo_id=1238551994"); 

Bien sûr, je peux faire correspond à caractère générique, ce n'est pas ce que je suis après .

+1

Merci de ne pas poser de questions. Il suffit d'éditer votre ancien. Cela va le cogner, si vous pensez vraiment que c'est utile. –

+1

Je ne le savais pas - je le ferais à l'avenir – mkoryak

+1

C'est OK, ne vous inquiétez pas à ce sujet. Vous voudrez peut-être modifier la vieille question pour la lier à celle-ci si cette question vous apporte une solution, puis demander aux gens de voter pour la fermeture de l'ancienne. –

Répondre

11

Il n'y a pas de "liste" d'attributs non pris en charge car il ne devrait pas y avoir; c'est un bug dans jQuery.

Voici les billets ouverts sur ce point:

Apparemment, le dénominateur commun entre les bogues est que jQuery compare la chaîne de sélection que vous spécifiez par rapport à l'attribut action/src tel qu'il est défini dans le code HTML. Ceci explique pourquoi les sélecteurs attributeEndsWith ou attributeContains fonctionnent dans ce cas.

Je recommanderais simplement de donner un formulaire/une image à la forme/à l'image et d'en finir avec.

+0

Merci, c'est l'info que je cherchais – mkoryak

4

Tout dépend de la version de jQuery que vous utilisez.

Avant 1.3, vous pouvez utiliser @ notation:

$("*[@name=value]") 

Alors peut-être ajouter @ aide.

Autre que cela, vous devez entrer la valeur d'attribut exactement la même que celle définie dans le balisage - par ex. si vous essayez de trouver une image avec src="http://example.com/dog.jpg", ne pas le faire parce que cela ne fonctionnera pas:

$("img[src=dog.jpg") 

comme il va essayer de trouver des images avec src égale à « dog.jpg » , ne le contenant pas.

Si vous souhaitez rechercher des attributs ne définissant que certaines parties, je vous suggère de lire la page jQuery API Selectors. Par exemple, pour obtenir toutes les images whit src contenant « dog.jpg », vous pouvez utiliser:

$("img[src*=dog.jpg]") 

De même, vous pouvez trouver des éléments dont les attributs commencer ou finir par des valeurs spécifiques/chaînes.

+0

J'ai mis à jour ma jquery et maintenant le sélecteur d'attribut (le deuxième exemple) ne fonctionne plus. Des pensées? – Scott