Как получить доступ к свойствам стиля псевдо-элементов с помощью jQuery?
для контекста это продолжение ранее заданный вопрос. А не копаться cssRules
, Я хотел бы основывать логику на селекторах jQuery, которые ищут эффекты этих правил.
учитывая свойства по умолчанию
.commentarea .author:before {
background-image: url(http://...);
background-position: -9999px -9999px;
/* ... */
}
которые избирательно модифицируются как в
.author[href$="gbacon"]:before /* ... */ {
content: "";
background-position: 0 -140px
}
как я могу выбрать псевдоэлементы, соответствующие фоновые позиции которых имеют значения по умолчанию? Копирование селектор в
GM_log("size = " + $(".commentarea .author:before").size());
ничего не соответствует. Пытаюсь!--20-->.siblings()
С
$(".commentarea .author")
.map(function(i) {
GM_log($(this)
.siblings()
.map(function (i) { return $(this).css("background-image") })
.get()
.join(", "))
});
производит только none
значения.
для получения полной информации см. Живые страницы. Возможно ли это?
2 ответов
вы не можете использовать :before
и :after
псевдо-элементы, такие как этот. Целью их является вставка содержимого до и ПОСЛЕ (соответственно) указанного вами селектора.
пример использования:
HTML:
<span class='a'>
Outer
<span class='b'>
Inner
</span>
</span>
CSS:
.a .b:before {
content: "|Inserted using :before|";
}
.a {
color: blue;
}
.b {
color: red;
}
результат:
случилось то, что текст |Inserted using :before|
был вставлен перед (ну, действительно, добавлено в) внутренний промежуток, потому что это был класс b
и потомок элемента класса a
. В основном, :before
и :after
не выбирайте; они изменяются.
пример:
это работает не так, как ожидалось:
HTML:
<span class='a'>
<p>More text</p>
<span class='b'>
<p>More text</p>
Inner
</span>
</span>
CSS:
.a .b:before {
text-size: 100px;
}
ничего бывает:
EDIT:
:before
не является допустимым селектором jQuery:http://api.jquery.com/category/selectors/
Я думаю, вам нужно будет использовать что-то другое, чем :before
или попытаться извлечь исходное правило с помощью плагина jQuery:http://flesler.blogspot.com/2007/11/jqueryrule.html
вот решение, использующее простой javascript:
// Get the color value of .element:before
var color = window.getComputedStyle(
document.querySelector('.element'), ':before'
).getPropertyValue('color');
// Get the content value of .element:before
var content = window.getComputedStyle(
document.querySelector('.element'), ':before'
).getPropertyValue('content');