Comment puis-je accéder à des propriétés de style de pseudo-éléments avec jQuery?
Pour le contexte, c'est un suivi à une question précédente. Plutôt que de creuser par le biais de cssRules
, je tiens à base de la logique sur les sélecteurs jQuery que la recherche de la effets de ces règles.
Donné les propriétés par défaut de
.commentarea .author:before {
background-image: url(http://...);
background-position: -9999px -9999px;
/* ... */
}
qui sont sélectivement modifié comme dans
.author[href$="gbacon"]:before /* ... */ {
content: "";
background-position: 0 -140px
}
comment puis-je sélectionner les pseudo-éléments dont la base respectifs positions ont des valeurs par défaut? Copier le sélecteur dans
GM_log("size = " + $(".commentarea .author:before").size());
correspond à rien. Essayer .les frères et sœurs()
avec
$(".commentarea .author")
.map(function(i) {
GM_log($(this)
.siblings()
.map(function (i) { return $(this).css("background-image") })
.get()
.join(", "))
});
ne produit que none
valeurs.
Pour plus de détails, voir la vivre la page. Est-ce possible?
Donc, fondamentalement, vous voulez sélectionner
Pourriez-vous poster un extrait du code HTML que vous travaillez avec?
Je veux choisir
Bacon; la
Bacon: je peux encore apporter une solution. En voisins, entendez-vous dans n'importe quelle direction?
.class1 .class2
aussi longtemps que les éléments à l'arrière-plan de l'image et de la position par défaut (basé sur la règle CSS)?Pourriez-vous poster un extrait du code HTML que vous travaillez avec?
Je veux choisir
.class1 .class2
tant que les voisins de la pseudo-élément de background position est la valeur par défaut.Bacon; la
:before
et :after
pseudo-éléments sont généralement utilisés pour insérer du contenu (w3schools.com/CSS/pr_pseudo_before.asp). Est le sélecteur CSS de travail? Je ne l'ai jamais vu utilisé comme cela.Bacon: je peux encore apporter une solution. En voisins, entendez-vous dans n'importe quelle direction?
OriginalL'auteur Greg Bacon | 2010-09-18
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser la
:before
et:after
pseudo-éléments comme ça. Le but est d'insérer du contenu avant et après (respectivement) le sélecteur vous avez spécifié.Exemple d'utilisation:
HTML:
CSS:
Résultat:
http://jsfiddle.net/mzcp6/
Ce qui s'est passé est que le texte
|Inserted using :before|
a été inséré avant (bien, vraiment, ajouté à) l'intérieur span parce que c'était la classeb
et un descendant d'un élément de la classea
. Fondamentalement,:before
et:after
ne sélectionnez pas; ils modifient.Exemple:
Cela ne fonctionne pas comme prévu:
HTML:
CSS:
Rien ne se passe:
http://jsfiddle.net/bQ2ty/
EDIT:
:before
n'est pas valide d'un sélecteur jQuery: http://api.jquery.com/category/selectors/Je pense que vous aurez besoin d'utiliser autre chose que
:before
ou tenter d'extraire les règles d'origine à l'aide du plugin jQuery: http://flesler.blogspot.com/2007/11/jqueryrule.html:before
et:after
ne pas apparaître dans les DOM (parce qu'ils sont purement de présentation), ainsi, il n'y a vraiment aucun moyen de les sélectionner avec jQuery.Jiang - Justement; j'ai remarqué que trop, mais a omis de le mentionner. Je vous remercie.
OriginalL'auteur Chris Laplante