2016-12-22 9 views
0

これは簡単ですが、何とか私はまだこれを手に入れませんでした。あなたが私を助けてくれることを願います。子のLIに「item_active」があるときに、親LIにクラス「item_active」を追加してください。

簡単に:子供LIの1つにそのクラスがあるときに、親LIがクラス「item_active」を追加したいと思います。

<ul class="nav navbar-nav"> 
    <li class=""><a href="main"><span>Main</span></a></li> 
    <li class="dropdown"><a href="services" class="dropdown-toggle" data-toggle="dropdown"><span>Services</span></a> 
    <ul class="dropdown-menu"> 
     <li><a href="first"><span>First</span></a></li> 
     <li class="item_active"><a href="second"><span>Second</span></a></li> 
     <li><a href="third"><span>Third</span></a></li> 
    </ul> 
    </li> 
    <li><a href="about"><span>About</span></a></li> 
    <li><a href="contact"><span>Contact</span></a></li> 
</ul> 

サブドロップダウンメニューの2番目のLIには「item_active」というクラスがあります。

このシナリオでは、私の場合、jQueryが "item-active"クラスを "dropdown"クラスのLIに追加します。

私は多くの異なったことを試みました。これは、最も近いかもしれない、まだそれは何もしなかった:

$('.navbar-nav li ul li').each(function(){ 
    if($(this).hasClass('item_active')) { 
     $(this).closest('.dropdown').addClass('item_active'); 
    } 
}); 

Fiddle here

私はSOの多くの異なった答えを読んではなく、これを解決してきた1。

+0

動作している必要があるように見えます。実際に要素を調べてクラスを取得していないことを検証し、console.log()によってコードが実際に実行されていることを検証しましたか?このコードは$(document).ready()関数の中から実行されていますか? – CGriffin

+0

jQueryライブラリをインクルードするのを忘れてしまった。 Fiddleが更新されました:https://jsfiddle.net/cxnx1147/3/ – gaetanoM

答えて

1

あなたが提供したフィディルドはjQueryを使用していません。それをロードするとうまくいくでしょう。

DEMO:https://jsfiddle.net/dirtyd77/cxnx1147/6/

また、ブートストラップは、プロパティをオーバーライドする特定のクラスを使用していることに注意してください。クラスを「見る」ことができないからといって、それが要素に追加されていないわけではありません。

はこれを説明するために、私は次のように使用:

.item_active { 
    background: yellow!important; 
} 

それは!importantはいえ良い練習と見なされていないことに注意することが重要です。 これが役立つことを願っています。

+1

これは非常に恥ずかしくて奇妙なものでした。私はそれを含めたが、それを忘れていたに違いない。 :-) – Preben

+1

私は常にChromeでインスペクタを使用して、クラスが追加されたかどうかを確認します。コメントありがとう:-) – Preben

関連する問題