2017-01-09 27 views
0

div要素の親cssプロパティに基づいてCSSスタイルを動的に適用したい。これを行うにはjavascriptで/これが可能ですか?コードの例:CSSの親要素

<div clas="parent"> 
    <div class="child"> 
      <div class="x"></div> 
    </div> 
</div> 

親クラスのCSSプロパティに基づいて、私はクラスのCSSプロパティを切り替えたいのx

+1

'($( '親')の場合はhasClass( 'someClass')){$( '。parent')。find( '。x')。addClass( 'anotherclass');} – nurdyguy

+0

これはCSSプロパティではありません。 – BoltClock

+0

それは間違っている必要があります、ごめんなさい。私は、CSSのクラスにプロパティを保存し、クラスを追加することをお勧めしますが、プロパティではありません。 – nurdyguy

答えて

0

まず、あなたはquerySelectorを使用して要素をつかむ、あなたはclassNameを使用してクラスを変更することができます。あなたの例では

は、赤に色を変更するには、あなたは何ができる:

document.querySelector('.parent .child div').className = "x" 

は、クラスを切り替えるには、あなたがclassList.toggle("x")

document.querySelector('.parent .child div').classList.toggle("x")` 
1
var y = document.getElementById('child').parentNode.className; 
if (y=="active") { 
document.getElementById('x').style.background = '#ff0000'; 
} 

デモ使用することができますhttp://codepen.io/simsketch/pen/vgNjdp

希望これを助けて!

+0

私はgetElementByClassNameを使用しようとしていましたが、コンソールは私にエラーを投げていました。私はコンソールでそれを見て、要素は存在していた。 –

2

JavaScriptを使用して、親クラスに基づいて何かを切り替える必要がありますか。あなたは純粋なCSSでそれを行うことができます。

.parent .child .x { 
    background-color: red; /* default */ 
} 


.parent.someClass .child .x { 
    background-color: yellow; /* overrides the default with specificity */ 
} 
+0

これは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)の「X」に答えます。これは正しい方法です。 –

+0

@cale_b彼は具体的に質問をするときに動的という言葉を含めました。 –

+1

@AlexanderDixon CSSルールは、親クラスの追加/削除時に動的に適用されます。 ;)それはすべて、OPが本当に必要なものに依存します。実際にJSが必要な場合は、JSソリューションを使用することができます。 – epascarello

0

あなたがjQueryへのアクセス権を持っている場合、あなたはそのような非常に特定のセレクタでそれをacheiveすることができます。

$('.x').each(function() { 
 
    if ($(this).closest($('.parent')).hasClass('makeBlue')) { 
 
    $(this).addClass('turnBlue'); 
 
    } 
 
    if ($(this).closest($('.parent')).hasClass('makeRed')) { 
 
    $(this).addClass('turnRed'); 
 
    } 
 
});
.x.turnBlue { 
 
    background-color: blue; 
 
    width: 250px; 
 
    height: 250px; 
 
} 
 
.x.turnRed { 
 
    background-color: red; 
 
    width: 250px; 
 
    height: 250px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div class="parent makeBlue"> 
 
    <div class="child"> 
 
    <div class="x"></div> 
 
    </div> 
 
</div> 
 
<div class="parent makeRed"> 
 
    <div class="child"> 
 
    <div class="x"></div> 
 
    </div> 
 
</div>