eozzy
eozzy

Reputation: 68650

Help with jQuery menu

Html:

<ul id="menu">
    <li>Menu 1</li>
    <li>Menu 2
        <ul>
            <li class="submenu">something</li>
        </ul>
    </li>
    <li>Menu 3</li>
</ul>

jQuery:

$('#menu > li:has(.submenu)').hover(function() {
    $(this).children('ul').show().addClass('active');
}, function() {
    $(this).children('ul').hide().removeClass('active');    
});

http://jsfiddle.net/mXTzy/

Now if .submenu is being shown, I want the parent li to have the class active (and removed on mouseout).

I'd appreciate any help with this.

Many thanks

Upvotes: 1

Views: 494

Answers (3)

Gowri
Gowri

Reputation: 16835

Are you looking for this?

jsFiddle

$('#menu > li').hover(function() {
    $(this).children('ul').show();
    $(this).addClass('active');
}, function() {
    $(this).children('ul').hide();  
   $(this).removeClass('active');  
});
#meun li { float: left; }
#menu li a { float; left; padding:10px; }
#menu li ul { display: none; }
#menu li.active  { background:#dd0; }
<ul id="menu">
    <li>Menu 1</li>
    <li>Menu 2
        <ul>
            <li class="submenu">something</li>
        </ul>
    </li>
    <li>Menu 3</li>
</ul>

Upvotes: 0

Michel Ayres
Michel Ayres

Reputation: 5985

idk if this will help you or not, but...

  1. try use :contains selector (http://api.jquery.com/contains-selector/)
  2. you can use toggleClass ( http://api.jquery.com/toggleClass/ )

Upvotes: 0

eozzy
eozzy

Reputation: 68650

Okay, figured:

$('#menu > li:has(.submenu)').hover(function() {
    $(this).addClass('active').children('ul').show();
}, function() {
    $(this).removeClass('active').children('ul').hide();    
});

.. a bit ugly though.

Upvotes: 1

Related Questions