Следующий код работает нормально, однако я не уверен, насколько он эффективен, и хотел предложить экспертам, если они смогут предложить лучшие альтернативы;что потом, я надеюсь, я смогу понять, как и почему и более эффективно кодировать в будущем.
$('.sub-level').slideUp(0);
$('.active + .sub-level').slideDown(0);
$('.active').parents('.sub-level').slideDown(0);
Этот скрипт jQuery закрывает и открывает соответствующие подменю при первой загрузке страницы.Он основан на следующем примере HTML:
<ul>
<li>
<a href="audio">Audio</a>
</li>
<li>
<a href="computing">Computing</a>
<ul class="sub-level sub-level-1">
<li><a href="laptops">Laptops</a></li>
<li><a class="active" href="netbooks">Netbooks</a></li>
<li><a href="ipads-tablets-ereaders">iPads, tablets & eReaders</a></li>
<li><a href="desktop-pcs">Desktop PCs</a></li>
</ul>
</li>
<li>
<a href="photography">Photography</a>
<ul class="sub-level sub-level-1">
<li><a href="dslr">DSLR</a></li>
<li><a href="compact-cameras">Compact Cameras</a></li>
</ul>
</li>
</ul>
Идея состоит в том, что мне нужно немедленно закрыть все подменю (используя slideUp()
, чтобы jQuery записывал высоту, в противном случае при вызове slideDown()
позжеанимация нервная), но мне нужно держать открытым подменю текущего пункта меню (который классифицируется как «активный»).
Я думал, что, потому что я закрываю все меню,а затем посмотрите, чтобы открыть определенное меню (также есть возможность для нескольких подменю), оно не кажется особенно эффективным - есть всегда лучший способ!