J'ai une collection de cases à cocher avec des identifiants générés et certains d'entre eux ont un attribut supplémentaire. Est-il possible d'utiliser JQuery pour vérifier si un élément a un attribut spécifique? Par exemple, puis-je vérifier si l'élément suivant a l'attribut "myattr"? La valeur de l'attribut peut varier.
<input type="checkbox" id="A" myattr="val_attr">A</input>
Par exemple, comment puis-je obtenir une collection de toutes les cases à cocher qui ont cet attribut sans vérifier une par une? Est-ce possible?
jquery
attributes
Ciprian Grosu
la source
la source
$filtered = $collection.filter('[attribute_name]');
Réponses:
Voulez-vous dire pouvez-vous les sélectionner? Si oui, alors oui:
la source
href
attribut.$("#myBox").find('a').filter(':not([href])')
ÉDITER:
Ce qui précède tombera dans le
else
-branch lorsqu'ilmyattr
existe mais est une chaîne vide ou "0". Si c'est un problème, vous devez explicitement tester surundefined
:la source
undefined
est considérée comme un cas marginal et la comparaison ci-dessus fonctionnera dans 99% des cas.Je sais que cela fait longtemps que la question n'a pas été posée, mais j'ai trouvé le chèque plus clair comme ceci:
(Tel que trouvé sur ce site ici )
La documentation sur is peut être trouvée ici
la source
Cela fonctionnera:
la source
$(this).<something>
quand ici vous pouvez le fairethis.hasAttribute('...')
directement (et ne vous souciez pas des anciens navigateurs, bien sûr.)En JavaScript, ...
... renvoie
true
*. C'est la différence entre==
et===
. En outre, le nomundefined
peut être défini (ce n'est pas un mot-clé comme l'null
est), il vaut donc mieux vérifier d'une autre manière. Le moyen le plus fiable est probablement de comparer la valeur de retour de l'typeof
opérateur.Néanmoins, la comparaison avec null devrait fonctionner dans ce cas.
* En supposant qu'il ne
undefined
soit en fait pas défini.la source
$("input[attr]").length
pourrait être une meilleure option.la source
Quelques idées ont été lancées en utilisant "typeof", jQuery ".is" et ".filter" alors j'ai pensé que j'en posterais une rapide comparaison de performances. Le typeof semble être le meilleur choix pour cela. Bien que les autres fonctionnent, il semble y avoir une nette différence de performances lors de l'appel de la bibliothèque jq pour cet effort.
la source
la source
isset()
ou par exemple en js$("#element").attr('my_attr') === false
,comme dans cet article , en utilisant
.is
et le sélecteur d'attribut[]
, vous pouvez facilement ajouter une fonction (ou un prototype):la source
la source
simplement:
plus d'informations: documents officiels
la source
En plus de sélectionner tous les éléments avec un attribut
$('[someAttribute]')
ou$('input[someAttribute]')
vous pouvez également utiliser une fonction pour effectuer des vérifications booléennes sur un objet comme dans un gestionnaire de clic:if(! this.hasAttribute('myattr') ) { ...
la source
J'ai créé un package npm avec le comportement prévu comme décrit ci-dessus en question.
Lien vers [npm] et [github]
L'utilisation est très simple. Par exemple:
renvoie vrai.
Fonctionne également avec le chameau.
la source
Pour sélectionner des éléments ayant un certain attribut, voir les réponses ci-dessus.
Pour déterminer si un élément jQuery donné a un attribut spécifique, j'utilise un petit plugin qui retourne
true
si le premier élément de la collection ajQuery a cet attribut:la source
JQuery renverra l'attribut sous forme de chaîne. Par conséquent, vous pouvez vérifier la longueur de cette chaîne pour déterminer si elle est définie:
la source