attributs non trouvé par jquery sélecteur d'attribut
-
09-09-2019 - |
Question
je dois reask ma vieille question, je probablement shouldnt ont demandé ce à 1h du matin: P
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 forme, et l'attribut img src. Y at-il une part de la liste des attributs qui ne fonctionnent pas si je peux écrire des filtres personnalisés pour eux?
Merci encore!
Edit: Personne ne semble croire que certains sélectionneurs ne fonctionnent pas comme prévu. Regardez cet exemple: Le ce 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 environs le menu déroulant «rechercher les téléchargements en cours de). Si vous ouvrez Firebug et essayez ce sélecteur:
$("form[action=list]");
vous ne serez pas en mesure de choisir la forme. sur l'attribut d'action Il n'y a rien de spécial. 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 le faire correspond à caractère générique, ce n'est pas ce que je suis après.
La solution
Il n'y a pas de « liste » des attributs non pris en charge parce qu'il ne devrait pas être; ce bogue dans jQuery.
Voici les billets ouverts sur ce point:
- Impossible de sélectionner un formulaire en utilisant l'attribut action
- attr "action" de la forme et le filtre d'attribut de sélecteurs
- sélection par attribut "src" ne fonctionne pas de la même manière que dans 1.2.6
Apparemment, le dénominateur commun entre les bugs que jQuery compare la chaîne de sélection que vous spécifiez contre l'URL complète, par opposition à l'attribut action / src réel tel qu'il est défini dans le code HTML. Ceci explique pourquoi le attributeEndsWith ou sélecteurs de attributeContains ne fonctionnent dans ce cas.
Je recommande simplement donner la forme / image une classe / ID et de le faire au plus vite.
Autres conseils
Tout dépend de quelle version 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 même comme il est défini dans le balisage - par exemple 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")
car il va essayer de trouver des images avec src égale pour "dog.jpg", ne contenant.
Si vous souhaitez rechercher des attributs définissant une partie seulement, je vous suggère de lire jQuery API Selectors page. 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.