6
votes

Sélectionnez l'élément par style CSS (tout avec style donné)

Y a-t-il un moyen de sélectionner tous les éléments qui ont un style donné à l'aide de JavaScript?

Par exemple, je veux tous les éléments absolument positionnés sur une page.



Je suppose qu'il est plus facile de trouver des éléments par style où le style est explicitement déclaré:

  • Le style n'est pas hérité (tel que le positionnement)
  • Le style n'est pas la valeur par défaut (comme cela serait la position: statique).

    suis-je limité à ces règles? Existe-t-il une meilleure méthode pour quand ces règles s'appliquent?

    Je voudrais utiliser volontiers un moteur de sélection si ceci est fourni par un (idéalement slick - motoools 1.3)

    EDIT:
    J'ai proposé une solution qui ne travaillera que avec des règles ci-dessus.
    Il fonctionne en cyclisme à travers chaque règle de style, puis sélecteur à la page.
    Quelqu'un pourrait-il me dire s'il s'agit mieux que cycliste à travers tous les éléments (comme recommandé dans toutes les solutions).
    Je suis conscient que dans IE, je dois changer le style en minuscule, mais que je pouvais analyser tous les styles à la fois avec CSstext. Laissé cela pour la simplicité.
    À la recherche de meilleures pratiques. xxx


3 commentaires

@samgoody vos bullets sont déroutants. Le premier fait diverses hypothèses, puis la seconde semble le jeter en disant - "sans faire de ces hypothèses" :)


@Anurag. Vous avez tout à fait raison. Merci. Fixé. (J'espère. Est-ce mieux?)


Votre approche semble plus rapide, comme un CSS ou getStyle pour chaque élément entraîne un appel au native getcomputedstyle qui prend du temps. Les règles CSS, OTOH, sont déjà analysées à l'avance, et c'est simplement une question de boucler à travers eux.


4 Réponses :


-1
votes

Il n'y a pas de sélecteur pour les attributs CSS, vous êtes donc à peu près bloqué de boucler à travers chaque élément et de vérifier sa position. Voici une méthode de jQuery: xxx

Vous pouvez utiliser des relevés de cas au lieu de si / sinon aussi.

autre que cette solution, il n'y a pas de sélecteur en soi qui peut rechercher par attributs CSS (à moins qu'ils n'étaient en ligne, peut-être).


4 commentaires

Je n'ai aucun problème avec JQuery, mais vous devez spécifier que vous l'utilisez - je suis allé chercher à savoir ce que cette fonction .CSS () était.


@Samgoody, je suppose que c'était plus satisfaisant de bowevote plutôt que d'ajouter quelques mots à la réponse? En tout état de cause, j'ai ajouté ces mots.


@Johnk je n'ai pas fait voter-voter votre réponse (surtout comme cela pourrait être utile aux autres), il suffit de commenté. Mais peut-être que j'aurais dû éditer la réponse au lieu de faire un commentaire? Je ne suis pas sûr, je n'aime pas personnellement l'édition agressive autant que je n'aime pas aimer le vote de descente agressive.


@Samgoody, d'accord, bon d'entendre. Fyi j'ai ajouté quatre mots.



7
votes

en jQuery, vous pouvez utiliser xxx pré>

[update] em> str> p>

ou même créer un nouveau sélecteur. de
Je me suis intéressé et alors voici un ( c'est mon 1er 1er, donc ce n'est pas construit pour l'efficacité em>) pour trouver des éléments de la propriété CSS .. p>

$.expr[':'].css = function(obj, index, meta, stack){
  var params = meta[3].split(',');

  return ($(obj).css(params[0]) == params[1]);
};


0 commentaires

8
votes

Vous pouvez garder des motes, ou tout ce que vous utilisez ... :) xxx


0 commentaires

7
votes

pour motools: xxx


1 commentaires

+1: Il Works , est élégant et est en fait à MotooTools - la biologienne préférée de l'Asker.