jQuery: установить непрозрачность всего элемента, кроме дочернего? - PullRequest
0 голосов
/ 11 августа 2011

Я не знаю, возможно ли это вообще ...

У меня есть div#branding внутри моего заголовка.Заголовок имеет несколько других элементов внутри.Я хочу, чтобы у всех моих детей header была непрозрачность 0,3, но НЕ #branding div.

Как мне этого добиться?

Я пробовал со следующей частью, но это нене работает.

$('header div:not(#branding)').css('opacity', '0.3');

Спасибо за вашу помощь.

Ответы [ 4 ]

3 голосов
/ 11 августа 2011

Попробуйте это:

$('div#header').children().css('opacity', '0.3');

Выбирает все дочерние элементы заголовка div # и применяет прозрачность только к ним. (http://api.jquery.com/children/)

Демо: http://jsfiddle.net/MNUsL/1/

1 голос
/ 11 августа 2011

следует, попробуйте:

$('header div').not('#branding').css('opacity', '0.3');

edit

Что касается наследования непрозрачности - дочерние элементы не могут быть менее непрозрачными, чем родительские, но могут быть более

http://jsfiddle.net/Jacek_FH/MNUsL/12/

0 голосов
/ 11 августа 2011

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

<div id="headerWrapper">
   <div id="header">...</div>
   <div id="branding"></div>
</div>

Тогда это просто вопрос позиционированиябрендинг сверху со свойствами css "position: относительный" и "z-index".Он больше не будет дочерним по отношению к заголовку, но находится внутри оболочки, поэтому, если вы хотите прослушать определенные события, это все еще возможно.

Надеюсь, это поможет.

0 голосов
/ 11 августа 2011

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

$('headerSelector').children(":not(#branding)").css('opacity', '0.3');
...