Выберите элемент на основе дочернего класса - PullRequest
18 голосов
/ 08 сентября 2010

Есть ли способ в CSS выбрать элемент, который имеет подэлемент с данным классом?

Я хочу применить стиль к списку <ul>, который имеет <li> с определенным классом.

Ответы [ 4 ]

12 голосов
/ 08 сентября 2010

Это невозможно с css, так как вы работаете с каскадом, выбирая предка на основе потомка.

Лучшее, что я могу предложить и предложить, - это подход jQuery:

$(document).ready(
  function() {
    $('.givenClassName').parent().addClass('something');
  }
);

Это находит элемент с givenClassName, затем выбирает его родительский элемент и добавляет класс something к этому элементу.

@ Blaenk предлагает альтернативный подход, который является более универсальным (его подход не требует, чтобы элемент-предок был родителем элемента, который вы выбираете).

Очевидно, что другие библиотеки JS и JS сами по себе могут достичь того же эффекта, хотя я не могу дать конкретного совета, поскольку я все еще только знакомлюсь с JS и в основном с jQuery (почему да, я 1014 * am стыдно за себя ...).

5 голосов
/ 08 сентября 2010

Насколько я знаю, это, к сожалению, невозможно с помощью CSS.

Если вы можете использовать Javascript, у jQuery есть хороший способ сделать это, используя метод closest(). документация для него даже перечисляет пример, очень похожий на ваш: выбор ul, который имеет li определенного класса.

$("li.some-class").closest("ul");

Простите, если это не лучший способсделать это в JQuery.Я на самом деле новичок в jQuery, и это один из методов, которые я изучил до сих пор, и это казалось подходящим.

2 голосов
/ 08 сентября 2010

Нет. Каскад CSS не позволяет использовать этот тип селектора.

Лучшим решением в этом случае будет либо изменение DOM с помощью JavaScript, либо изменение результирующего HTML-кода для добавления классов в теги ul.

0 голосов
/ 08 сентября 2010
ul li {
    /* styles */
}

Это то, что вы просите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...