JQuery и псевдоэлементы

Я динамически меняю положение элемента en, которое определено в CSS с помощью :after. Я попытался изменить его следующим образом:

$(function(){
 $('div::after').css({'top':'20px'})
})

Но это не сработает. Есть ли способ изменить позицию?

2 ответа

Вы не можете. Содержимое, созданное :after или :before, не является частью DOM и поэтому не может быть выбрано или изменено.

Если вы посмотрите на этот пример скрипта и проверите DOM в Firebug или аналогичном, вы увидите, что псевдоэлемент отсутствует в дереве DOM.

Потенциальным решением было бы применить класс к элементу, который вы хотите изменить, и соответствующим образом подобрать этот класс в CSS:

$("div").addClass("newClass");

См. эту скрипту для примера.


добавить CSS:

p.special:before {
 content: "bar";
 position: absolute;
 top : 10px;
}

Предполагая, что таблица стилей, где был указан вышеприведенный код, является первой на странице, используйте ее, чтобы изменить ее:

document.styleSheets[0].addRule('p.special:before','top: 15px;');

licensed under cc by-sa 3.0 with attribution.