$(document).click( function(event){ if( $(event.target).closest('.folder > ul').length ) return; $('.folder.more > ul').slideUp(50); event.stopPropagation(); }); $('.folder.more > a').click( function() { $(this).siblings('.folder.more > ul').slideToggle(150); return false; });
Но тут вдруг откуда ни возьмись появилась новая задача — нужно, чтобы это работало нормально для всех пунктов, потому что у них тоже появились вторые уровни.
Если сделать так:
$(document).click( function(event){ if( $(event.target).closest('.folder > ul').length ) return; $('.folder > ul').slideUp(50); event.stopPropagation(); }); $('.folder > a').click( function() { $(this).siblings('.folder > ul').slideToggle(150); return false; });
Например, есть у нас такая структура:
<div id="maimenu"> <ul class="menu"> <li class="folder"> <a class="item"> <span class="wrap">Пункт 1</span> </a> <ul> подменю 1 </ul> </li> <li class="folder"> <a class="item"> <span class="wrap">Пункт 2</span> </a> <ul> подменю 2 </ul> </li> <li class="folder"> <a class="item"> <span class="wrap">Пункт 3</span> </a> <ul> подменю 3 </ul> </li> </ul> </div>
Кто знает? Данке шон.