Мой CSS выглядит так:
/* works */
.badger-left:after {
left: 0;
border-radius: 6px 0 6px 0;
background: #428bca;
}
jQuery, чтобы изменить его на лету:
$('.badger-left:after').css('background-color', "red"); // doesnt work
$('.badger-left').attr({ 'data-badger': "USA" }); // works
HTML:
<div class="col-sm-12 badger-left" data-badger="">
</div>
Почему не работает селектор jQuery и что мне делать, чтобы он работал? http://screencast.com/t/onWs4KDJVD - там, где говорится "США" (США настроены с бардака attr. data-badger в jquery), этот фон должен быть изменен на красный (или какой-либо цвет) с помощью jQuery.
благодаря
Селекторы CSS: after и: before не поддерживаются в javascript, большинство псевдоклассов нет.
jQuery добавляет css inline. Поскольку: before, и: после того, как на самом деле не существует, атрибут стиля не будет размещен в любом случае.
Запустите этот тест, чтобы увидеть:
$("*:after") // returns []
$("*") // returns a huge array ;)
Вы можете использовать jQuery.append() или.add() для достижения аналогичного эффекта.
CSS :: after selector просто добавляет "воображаемый" div внутрь элемента, который он применял непосредственно перед закрывающим тегом.
.append()
https://api.jquery.com/append/
.Добавить()
JQuery:
$('.badger-left').append('div');
CSS:
.badger-left div{
/* ".badger-left::after" styling would go here */
}
:after
потому что элемент на самом деле не существует. (Дубликат?)