CSS: после работы, но не при редактировании из jQuery

0

Мой 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.

благодаря

  • 0
    Селекторы jQuery не псевдоэлементы.
  • 0
    jQuery не может взаимодействовать с :after потому что элемент на самом деле не существует. (Дубликат?)
Показать ещё 5 комментариев
Теги:
twitter-bootstrap-3

3 ответа

1

Селекторы CSS: after и: before не поддерживаются в javascript, большинство псевдоклассов нет.

0

jQuery добавляет css inline. Поскольку: before, и: после того, как на самом деле не существует, атрибут стиля не будет размещен в любом случае.

Запустите этот тест, чтобы увидеть:

$("*:after") // returns []
$("*") // returns a huge array ;)
0

Вы можете использовать jQuery.append() или.add() для достижения аналогичного эффекта.

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

.append()

https://api.jquery.com/append/

.Добавить()

https://api.jquery.com/add/

JQuery:

$('.badger-left').append('div');

CSS:

.badger-left div{
    /* ".badger-left::after" styling would go here */
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню