jQuery sélection par attribut à l'aide des opérateurs and ET or
Je suis en train de réfléchir, si c'est possible en jQuery pour sélectionner des éléments par des attributs à l'aide de ET et OU.
Exemple:
<div myid="1" myc="blue">1</div>
<div myid="2" myc="blue">2</div>
<div myid="3" myc="blue">3</div>
<div myid="4">4</div>
J'aimerais pour sélectionner tous les éléments où myc="blue"
mais seulement ceux avec myid
définie sur 1 ou 3.
J'ai donc essayé:
a=$('[myc="blue"] [myid="1"] [myid="3"]');
mais il ne fonctionne pas, même ici:
a=$('[myc="blue"] && [myid="1"] || [myid="3"]');
Est-il possible sans l'écriture d'un filtre spécial fonctions?
- NB: Vous ne devriez pas faire vos propres attributs comme
myc
etmyid
. Si vous utilisez HTML5 préfixer avecdata-
:data-myc
etdata-myid
. - wow, 8 Réponses en 10 Minutes.. il semble que j'ai posé une question de noob. désolé! :-/
- Non, c'est une question intéressante, et la plupart des réponses différentes approches et votre question a obtenu 3 upvotes + 2 fav.. certainement une bonne question.
- est-il de la documentation en HTML5 qui vous dit que vous devriez le faire de cette façon? La plupart des sites que je vois utiliser quel que soit le développeur du cerveau pense à l'époque...
- Tout simplement parce que les gens le font, cela ne signifie pas que c'est correct. Voir HTML5 Section 3.2.1: "les Auteurs ne doivent pas utiliser des éléments, des attributs, ou les valeurs d'attribut qui ne sont pas autorisées par la présente spécification ou d'autres normes applicables, ce qui rend beaucoup plus difficile pour la langue, pour être étendu dans le futur."
- C'est un mauvais exemple d'une bonne question. Ce sur les différents types d'éléments comme les entrées?
Vous devez vous connecter pour publier un commentaire.
ET opération
OU fonctionnement, de l'utilisation des virgules
Comme @Vega a déclaré:
myc == blue && (id == 1 || id == 3)
a=$('[myc="blue"] [myid="1"],[myid="3"]');
signifie-t-il([myc="blue"] AND [myid="1"]) OR [myid="3"]
ou([myc="blue"]) AND ([myid="1"] OR [myid="3"])
je suis à la recherche pour le 2ème //Edit: merci pour cette mise à jour! 🙂Simple d'utilisation
.filtre()
[docs] (ET) à l'aide de la plusieurs sélecteur [docs] (OU):En général, le chaînage des sélecteurs, comme
a.foo.bar[attr=value]
est une sorte de ET le sélecteur.jQuery a une documentation complète concernant le support des sélecteurs, il vaut la peine de lire.
Comment sur l'écriture d'un filtre comme ci-dessous,
Edit: @Jack Merci.. totalement raté..
DÉMO
myid
, pasid
🙂L'opérateur et dans un sélecteur est juste une chaîne vide, et l'opérateur ou est la virgule.
Il n'y a cependant pas de regroupement ou de priorité, de sorte que vous devez répéter l'une des conditions:
blue
, mais je n'étais pas sûr au sujet des valeurs numériques, donc je l'ai gardé.D'abord trouver la condition qui se produit dans toutes les situations, puis filtre les conditions particulières:
Dans votre cas particulier, il serait
JQuery utilise les sélecteurs CSS pour sélectionner des éléments, vous avez juste besoin d'utiliser plus d'une règle en les séparant par des virgules, comme suit:
Edit:
Désolé, vous avez voulu bleu et 1 ou 3. Que diriez-vous:
De mettre les deux sélecteurs d'attribut donne vous ET, à l'aide d'une virgule vous donne OU.
myc == blue && (id == 1 || id == 3)
[myc="blue"]
sélecteur dans le deuxième exemple.Pour sélectionner les éléments à l'aide de la logique des opérations que vous avez dit, vous avez juste besoin
jQuery.filter()
pour laAND
opération, pas de "filtre spécial fonctions". Vous avez également besoin d'jQuery.add()
pour laOR
opération.Alternativement, il est possible de réaliser à l'aide de commodité dans un seul sélecteur de brouillage sélecteurs ensemble agit comme un
AND
, et de les séparer par une virgule agit comme unOR
: