6
votes

jQuery vérifier si l'élément contient un attribut

Je peux vérifier si un élément a un attribut spécifique avec: xxx

Comment puis-je vérifier si un élément a un attribut?

Merci


2 commentaires

Je me demande si JQuery offre quelque chose comme $ ("# A [*]") ?


@Naeem: Je pense que cela pourrait être une bonne fonctionnalité, mais comme il existe des moyens faciles de résoudre ce problème, je ne pense pas qu'ils puissent l'ajouter.


7 Réponses :


9
votes

Si vous voulez voir si l'élément a un attribut particulier, faites-le simplement:

if ($('#something').is('[attribute]')) {
  // ...
}


3 commentaires

Je suis intéressé à voir si un élément a un attribut de tout aucun attribut n'est pas spécifique.


OK, mais le point est que ce que vous avez saisi dans votre exemple ci-dessus ne fonctionnera pas.


Cela peut également fonctionner avec de multiples attributs, juste une virgule séparée le sélecteur d'attributs dans la méthode "est" ".is (" [attribut], [attr2], [Att3] ")"



2
votes

Vous auriez besoin d'utiliser des informations à partir de Obtenez tous les attributs d'un élément HTML avec JavaScript / JQuery


0 commentaires

2
votes

pas un code de jQuery entier mais cela fonctionnera

$("a").click(
function () {
    if($("a").get(0).attributes > 0)
        alert("it has attributes");
})


1 commentaires

Merci Tarik, je regarde ça



6
votes

Voici une fonction qui détermine si l'un des éléments correspondant à un sélecteur a au moins un attribut: xxx pré>

utilisation: p> xxx pré>

Si vous souhaitez utiliser des éléments sélectionnés qui ont au moins un attribut, il est encore plus facile - vous créez un filtre personnalisé: p> xxx pré>

que vous pouvez utiliser comme celui-ci: p >

$(document).ready(function(){
    $('li:hasAttributes').addClass('superImportant');
}


6 commentaires

N'est-ce pas un peu trop: $ ("certains"). Obtenez (0) .attributes> 0 serait suffisant, je pense.


@Tarik - qui ne vérifie que le premier élément correspondant, lorsqu'il peut y avoir plusieurs correspondances.


@Jeff - Y a-t-il un moyen d'ajouter une classe sur les éléments ayant des attributs avec cette fonction? Merci encore


@Mircea - J'ai mis à jour ma réponse pour montrer comment vous pourriez faire cela, bien qu'il s'agisse de buggy dans IE 6 pour des raisons pour des raisons pour des raisons pour des raisons.


Mais ne demandait-il pas "comment puis-je vérifier si un élément a un attribut?". Donc, je pense que ça devrait être bien :) Donc, si un élément a plus de 0 attribut, il a au moins un attribut.


@Tarik - Désolé, je n'étais pas très clair la première fois. Vous avez raison que la question posée "Comment puis-je vérifier si un élément a un attribut?" Mais JQuery ne garantit pas qu'il retournerait un seul élément - il est toujours possible qu'il correspondra à zéro ou à plusieurs éléments, de sorte que la chose la plus sûre à faire est de les vérifier (ou aucun d'entre eux, car l'élément zéro peut exister) .



0
votes

Voici une solution que j'ai trouvée plus fiable à savoir si un élément a défini des attributs qui fonctionnent dans IE, Chrome et Firefox:

$(selector).each(function(index, element) {
    if (element.hasAttributes) { // Some browser supports this method
        if (element.hasAttributes()) {
            return true;
        }
     } else {
           // IE counts many attributes - even if not set explicitly
           var attrs = element.attributes;
           for (var i = 0; i < attrs.length; i++) {
                if (attrs[i].specified) {
                    return true;
                }
            }
     }
     return false;
});


0 commentaires

1
votes

Je ne sais pas si vous souhaitez simplement retourner les éléments contenant l'attribut, mais si vous êtes, j'ai trouvé la méthode la plus facile comme suit: xxx pré>

que Retournera l'objet JQuery pour inclure tous les éléments contenant l'attribut quelle que soit sa valeur. Par exemple. P>

$(':text[maxlength]').addClass('has_max_length');


0 commentaires

4
votes
$("selector").get(0).hasAttributes("attributes");

0 commentaires