90 votes

Jquery : Comment vérifier si l'élément possède une certaine classe/style css

J'ai un div :

<div class="test" id="someElement" style="position: absolute"></div>

Existe-t-il un moyen de vérifier si un élément donné :

$("#someElement") 

a une classe particulière (dans mon cas, "test").

Sinon, existe-t-il un moyen de vérifier qu'un élément a un certain style ? Dans cet exemple, j'aimerais savoir si l'élément a " position: absolute ".

Merci beaucoup !

14 votes

Je ne sais pas si c'est la question ou la réponse qui est fausse, mais la question a style="test", et la réponse cherche class="test".

1 votes

A mon avis, la question est fausse, puisqu'il a marqué la mauvaise réponse comme étant la bonne ; mais quoi qu'il en soit, après avoir regardé les votes, je pense que la plupart des gens sont venus ici pour chercher la bonne réponse à cette mauvaise question... euh, si cela a un sens... La réponse de DrJokepu, je veux dire. C'est pourquoi je suis ici au moins.

284voto

Tamas Czinege Points 49277

Les styles CSS sont des paires clé-valeur, et non de simples "balises". Par défaut, chaque élément se voit attribuer un ensemble complet de styles CSS. La plupart d'entre eux utilisent implicitement les valeurs par défaut du navigateur et certains sont redéfinis explicitement dans les feuilles de style CSS.

Pour obtenir la valeur attribuée à une entrée CSS particulière d'un élément et la comparer :

if ($('#yourElement').css('position') == 'absolute')
{
   // true
}

Si vous n'avez pas redéfini le style, vous obtiendrez le style par défaut du navigateur pour cet élément particulier.

3 votes

Il n'y a aucun moyen de le faire avec un sélecteur ?

0 votes

Avec cela, vous pouvez voir quelle est la propriété réelle, ce que je dois savoir, c'est si cette propriété est définie directement ou si elle est héritée du style css / navigateur ... est-ce possible ?

0 votes

Cela ne semble pas fonctionner pour le scénario où le DOM change et où la valeur css d'un objet change après le chargement de la page. Avez-vous une idée de la manière dont on peut faire en sorte que les modifications de l'intégration après le chargement du DOM soient prises en compte ?

60voto

Darin Dimitrov Points 528142
if($('#someElement').hasClass('test')) {
  ... do something ...
}
else {
  ... do something else ...
}

76 votes

Cela ne répond pas à la question posée - voir la réponse de DrJokepu ci-dessous.

13voto

Sandeep Gupta Points 26
if ($("element class or id name").css("property") == "value") {
    your code....
}

6voto

kelseedev Points 89

Ou, si vous devez accéder à l'élément qui possède cette propriété et qui n'utilise pas d'id, vous pouvez suivre cette voie :

$("img").each(function () {
        if ($(this).css("float") == "left") { $(this).addClass("left"); }
        if ($(this).css("float") == "right") { $(this).addClass("right"); }
    })

1voto

0100110010101 Points 1727

J'ai trouvé une solution :

$("#someElement")[0].className.match("test")

mais d'une manière ou d'une autre, je crois qu'il y a un meilleur moyen !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X