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. P>
Je suppose qu'il est plus facile de trouver des éléments par style où le style est explicitement déclaré: p>
suis-je limité à ces règles? Existe-t-il une meilleure méthode pour quand ces règles s'appliquent? P>
Je voudrais utiliser volontiers un moteur de sélection si ceci est fourni par un (idéalement slick - motoools 1.3) p>
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. P>
4 Réponses :
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: Vous pouvez utiliser des relevés de cas au lieu de si / sinon aussi. P> 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). P> P>
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.
en jQuery, vous pouvez utiliser [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]);
};
Vous pouvez garder des motes, ou tout ce que vous utilisez ... :)
pour motools:
+1: Il Works , est élégant et est en fait à MotooTools - la biologienne préférée de l'Asker.
@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 code> ou
getStyle code> pour chaque élément entraîne un appel au native
getcomputedstyle code> 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.