2016-08-28 21 views
1

以下のコードで "title"クラスを選択するにはどうすればよいですか? "subnav"クラスが存在する場合はどうしたらいいですか?css隣接する兄弟コンビネータ - 選択した選択

<ul class="flexMenu-popup"> 
<li> 

    <a href="x" class="title"> 
    </a> 

    <ul class="subnav"> 
    </ul> 

</li> 
</ul> 
+0

あなたの質問が明確ではなかった、あなたはより具体的な –

+0

を詳しく説明してくださいすることができます私は質問を更新し、クラス名を追加して、よく分かりました。混乱して申し訳ありません。返信に感謝します。 – Nippledisaster

+0

いいえ。CSSには、「別の要素の後にある要素」のセレクタがありますが、「別の要素の前の要素」はありません。なぜ私に尋ねないでください。可能な解決策の1つは、ソース内での順序を変更し、フレックスボックスや位置決めでスマートなことをすることです。 –

答えて

1

私は、これはCSSで可能であるわからないんだけど、それはjQueryを使って非常に簡単です:

var $ul = $('a.title', $('ul.flexMenu-popup > li > ul.subnav').parent()); 

if ($ul.length) { 
    alert('yes'); 
} 
else { 
    alert('no'); 
} 
+0

ありがとうメイト:)この解決策は良かった – Nippledisaster

+0

私は完全な初心者、私はクラス名なしで要素をターゲットにしようとしますが、機能しません。 – Nippledisaster

+0

メインのjQuery呼び出しの2番目の引数は、最初の引数で表される要素が検索される要素を表します。したがって、あなたの "var"行は次のようになります: 'var 'ul = $(' a '、$('。flexMenu-popup> li ul ')。parent());'存在しない別の '.flexMenu-popup> li ul'の' .flexMenu-popup> li ul'_insideを探していました。 – MJH

1

隣接セレクタ(〜と+)を使用すると、要素に続く兄弟を選択することのみが可能です。つまり、ulに続いてaを選択することができ、その逆もできません。

以下

参照スニペット:

ul { 
 
    border: 1px solid black; 
 
    list-style-type: none; 
 
} 
 
.flexMenu-popup li > ul ~ a { 
 
    color: red; 
 
}
<ul class="flexMenu-popup"> 
 
    <li> 
 
    <a href="#">a tag</a> 
 
    <ul> 
 
     ul tag 
 
     <li> 
 
     <a href="#">a tag</a> 
 
     <ul>ul tag</ul> 
 
     <a href="#">a tag</a> 
 
     </li> 
 
    </ul> 
 
    <a href="#">a tag</a> 
 
    </li> 
 
</ul>

ソリューション

.flexMenu-popup li > a { 
    color: red; 
} 
.flexMenu-popup li > ul ~ a { 
    color: inherit; 
} 
: は、しかし、私はあなたが以下のルールの組み合わせによって行うことができます探しているものだと思います

下記のスニペットをご覧ください:

ul { 
 
    border: 1px solid black; 
 
    list-style-type: none; 
 
} 
 
.flexMenu-popup li > a { 
 
    color: red; 
 
} 
 
.flexMenu-popup li > ul ~ a { 
 
    color: inherit; 
 
}
<ul class="flexMenu-popup"> 
 
    <li> 
 
    <a href="#">a tag</a> 
 
    <ul> 
 
     ul tag 
 
     <li> 
 
     <a href="#">a tag</a> 
 
     <ul>ul tag</ul> 
 
     <a href="#">a tag</a> 
 
     </li> 
 
    </ul> 
 
    <a href="#">a tag</a> 
 
    </li> 
 
</ul>

+0

ありがとう、私は実際には色のプロパティを使用しない、私はこれは私が望むもののための解決策だと思うdontコンテンツ/右/左/私はそれをするための単純なスクリプトのために行く必要があると思う。 – Nippledisaster

+0

はい、使用して ':'擬似要素は良いオプションです。乾杯! – kukkuz

関連する問題