2017-06-26 10 views
3

次のHTML構造を持っています。クラス名が「second class」の最初のulを選択し、同じクラス名で2番目のulと異なる幅を適用したいとします。クラス名で最初のulに異なるスタイルを適用してください

<div> 
    <div class='Link1'> 
     <a>Products</a> 
     <div class = 'firstClass'> 
      <ul class='secondClass'> 
       <li></li> 
       <li></li> 
      </ul> 
     </div> 
    </div> 
    <div class='Link1'> 
     <a>Tools</a> 
     <div class = 'firstClass'> 
      <ul class='secondClass'> 
       <li></li> 
       <li></li> 
      </ul> 
     </div> 
    </div> 
<div> 

私は以下のCSSを試していましたが、動作しませんでした。

+0

あなたは 'ul.secondClass:first-child {width:750px; } '、それが動作するかどうかを確認し、そこから行く? – Ben

+0

@ベン私は両親の最初の子であるため両方を選択すると思います – Tony

答えて

0

CSSのみを使用すると、1つの要素に適用された後にルールが適用されなくなることはありません。これは基本的には

.Link1 > .firstClass > ul.secondClass:first-child 

というように、そのセレクタに一致するすべての要素に適用されます。

var firstMatch = document.querySelector('.Link1 > .firstClass > ul.secondClass:first-child'); 
firstMatch.className = firstMatch.className + ' additionalClass'; 

...そして、もちろん、あなたはあなたのCSSでadditionalClassのスタイルをする必要があると思います:

しかし、あなたは簡単にはJavaScriptを使用して最初の試合に別のクラスを適用することができます

jQueryのを使用して
.Link1 > .firstClass > ul.secondClass.additionalClass:first-child { 
    /* CSS here */ 
} 

、それは次のようになります。

$('.Link1 > .firstClass > ul.secondClass:first-child').first().addClass('additionalClass'); 

the original, not workingではなく、working exampleです。

+0

私は質問を投稿する前にJqueryソリューションを試してみませんが。あなたのソリューションは今私のために働く。私はトニーが以前に投稿したことを試していたが、それは私のために働いていなかった。 – PRR

関連する問題