2010-09-07 2 views
15

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

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

+1

Возможный дубликат [родительский селектор CSS] (http://stackoverflow.com/questions/1014861/css-parent-selector) –

+0

Да, это действительно дубликат. спасибо – akonsu

ответ

11

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

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

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

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

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

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

+0

+1, и у вас есть незакрытая цитата в вашем примере кода. –

+0

@Jeff Rupert, спасибо за +1 и исправление (отредактировано для исправления) =) –

+0

Ха-ха, я нахожусь на той же лодке, что и для Javascript и jQuery. Читал некоторые книги, чтобы добраться до скорости, хотя. Javascript: Хорошие детали и jQuery в действии, второе издание –

-3
ul li { 
    /* styles */ 
} 

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

+0

нет. Мне нужно установить стиль для ul – akonsu

2

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

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

4

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

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

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

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

+1

+1 для более универсального (чем мой) подход jQuery. –

Смежные вопросы