javascript - how to stop dropdown menu child sliding up when clicked -


i attempting make dropdown menu when clicked stays down also, when clicking anywhere within dropdown area, not slide up. when clicked elsewhere on page should disappear.

i struggling make happen though. can see doing here:

html

<nav id="moo"> <ul> <li>item 1 <i>o</i> <div class="dropdown">         <ul>             <li>item 2</li>             <li>item 3</li>             <li>item 4</li>         </ul>     </div> </li> <li>item 1 <i>o</i>     <div class="dropdown">         <ul>             <li>item 7</li>             <li>item 8</li>             <li>item 9</li>         </ul>     </div> </li> </ul> </nav> 

css

ul { padding: 0px; margin: 0px; } li { display: inline; } nav li { position: relative; } nav { cursor: pointer; font-weight: bold; background-color: red;padding: 5px; } .dropdown { display: none; position: absolute; border:1px solid #ccc; padding: 10px; }   .dropdown li { display: block; } 

script

$('nav li').click(function () { var $childdropdown = $(this).find('.dropdown');  if ($childdropdown.is(':visible')) {     $('.dropdown').slideup(300); } else {     $('.dropdown').slideup(300);     $childdropdown.slidedown(300); } });  /* gets document hide dropdown */ $(document).click(function(){ $(".dropdown").hide(); });  /* clicks within dropdown won't make past dropdown */ $("nav").click(function(e){ e.stoppropagation(); }); 

here fiddle version:

http://jsfiddle.net/susannalarsen/bunq9/

you need work event target property , traverse parents find out element has triggered event. if it's element inside ".dropdown" class, no sliding-up should applied, otherwise close dropdown.

example

$('nav > ul > li').click(function (e) { var $childdropdown = $(this).find('.dropdown');  if ($childdropdown.is(':visible')) {      var target = $(e.target);     if (!$(target).parents(".dropdown").length) {         $('.dropdown').slideup(300);     }     

} ...

notice changed selection in $('nav > ul > li'), apply li elements of upper level.


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -