For context, this is a followup to an earlier question. Rather than digging through cssRules, I’d like to base the logic on jQuery selectors that search for the effects of those rules.
Given default properties of
.commentarea .author:before {
background-image: url(http://...);
background-position: -9999px -9999px;
/* ... */
}
that are selectively modified as in
.author[href$="gbacon"]:before /* ... */ {
content: "";
background-position: 0 -140px
}
how can I select pseudo-elements whose respective background positions have default values? Copying the selector as in
GM_log("size = " + $(".commentarea .author:before").size());
matches nothing. Trying .siblings() with
$(".commentarea .author")
.map(function(i) {
GM_log($(this)
.siblings()
.map(function (i) { return $(this).css("background-image") })
.get()
.join(", "))
});
produces only none values.
For full details, see the live page. Is this possible?
You can’t use the
:beforeand:afterpseudo-elements like this. The purpose of them is to insert content before and after (respectively) the selector you have specified.Example usage:
HTML:
CSS:
Result:
http://jsfiddle.net/mzcp6/
What happened was that the text
|Inserted using :before|was inserted before (well, really, prepended into) the inner span because it was classband a descendant of an element of classa. Basically,:beforeand:afterdon’t select; they modify.Example:
This doesn’t work as expected:
HTML:
CSS:
Nothing happens:
http://jsfiddle.net/bQ2ty/
EDIT:
:beforeis not a valid jQuery selector: http://api.jquery.com/category/selectors/I think you will need to use something other than
:beforeor attempt to extract the original rule using the jQuery plugin: http://flesler.blogspot.com/2007/11/jqueryrule.html