2017-02-07 13 views
1

各要素セットの最初の要素にクラスを追加したいと思います。しかし、私のJSは最初のセットにのみ適用されます。jQueryを使用して各セットの最初の子要素にクラスを追加する方法

ドキュメントがロードされ、ホバーでそのクラスを削除するときに、セットの最初の要素にクラスを追加しようとします。

HTML

<div id="mega-menu-container"> 
    <div id="mega-menu"> 
     <div class="menu-title active"><h4>.....</h4></div> 
     <div class="menu-title"><h4>.....</h4></div> 
     <div class="menu-title"><h4>.....</h4></div> 
     <div class="menu-title"><h4>.....</h4></div> 
     <div class="menu-title"><h4>.....</h4></div> 
    </div> 
    <div id="mega-menu"> 
     <div class="menu-title"><h4>.....</h4></div> 
     <div class="menu-title"><h4>.....</h4></div> 
     <div class="menu-title"><h4>.....</h4></div> 
     <div class="menu-title"><h4>.....</h4></div> 
     <div class="menu-title"><h4>.....</h4></div> 
    </div> 
</div> 

JS

(function($) { 
$(document).ready(function() { 
$('#mega-menu-container .menu-title').eq(0).addClass('active'); 

$('#mega-menu-container .menu-title h4').hover(function(){ 
    $('#mega-menu-container .menu-title').toggleClass('active').siblings().removeClass('active') 
}); 
$("#mega-menu-container .menu-title h4").mouseleave(function(){ 
    $('#mega-menu-container .menu-title').eq(0).addClass('active'); 
}); 
}); 
})(jQuery); 

PROBLEM

問題がある - クラス "アクティブは、" 最初のdivに追加されますは最初のセットには含まれていますが、2番目のセットには含まれていません。

答えて

2

あなたは彼らの親の最初の子であるすべての要素を選択する:first-childセレクターを使用する必要があります。:

$('#mega-menu-container .menu-title:first-child').addClass('active'); 

あなたはまた、最も近い関連する要素ではなく、すべてのだけをターゲットにするホバーイベントを修正する必要があります。現在の要素コンテキストthisをトラバースとともに使用して、他のh4要素をターゲットにすることができます。

+0

エクセレントを使用していますhere

として行うことができます。だから、私が使っていたばかばかしくない:最初に考えたことはない:最初の子供。ありがとう。また、助言に感謝します。今すぐコードを改善します。 – Ayanize

0

jqueryを使用せずにCSSでこれを行うこともできます。あなたのアクティブなCSSが色を緑に変えているか、これまでに何が起こったのかを考えてみましょう。全体のセットが赤であることを意味します。そして、あなたはここで私は#mega-menu > :first-child

+0

ありがとうございます。実際には.activeというクラスは手動で追加されません。それは.addClass()を使って、セットの各最初の要素に動的に行われます。子要素のホバーでも同じことが行われます。だから私はCSSだけでここで私を助けることはできないと思う。 – Ayanize

関連する問題