Все, что я сделал, это изменил первый обработчик событий click
, чтобы остановить распространение событий click
, поэтому элемент <li>
, по которому фактически выполняется щелчок, будет единственным, кто получит событие click
, и я добавилвложенный <ul>
элемент в качестве третьего уровня.
JS -
jQuery('#vertnav li').click(function() {
return false;
});
jQuery('#vertnav > li, #vertnav > li > ul > li').click(function(){
if(!jQuery(this).find('ul').eq(0).is(':visible')) {
jQuery(this)
.siblings().find('ul:visible')
.slideToggle();
}
jQuery(this)
.find('ul').eq(0)
.stop(true, true)
.slideToggle();
});
Обратите внимание, что я удалил tagName
s из селекторов, где это возможно, и вместо использования псевдо :first
-selector Я использовал .eq(0)
, чтобы получить первый результат.Я также изменил селектор .parent().find('> li')
на .siblings()
, поскольку выбор родителя и потомка такой же, как выбор родного брата.Все это заставит код работать быстрее.
HTML -
<ul id="vertnav">
<li class="first level0-active level0 active products open">
<span class="vertnav-cat"><a href="http://dev.site.com/products.html"><span>Products</span></a></span>
<ul>
<li class="first level1-inactive level1 inactive sitetion">
<span class="vertnav-cat"><a href="http://dev.site.com/products/sitetion.html"><span>sitetion</span></a></span>
<ul>
<li>Third Tier</li>
</ul>
</li>
<li class="level1-inactive level1 inactive ultrasonics">
<span class="vertnav-cat"><a href="http://dev.site.com/products/ultrasonics.html"><span>Ultrasonics</span></a></span>
</li>
<li class="level1-inactive level1 inactive surgery">
<span class="vertnav-cat"><a href="http://dev.site.com/products/surgery.html"><span>Surgery</span></a></span>
</li>
<li class="level1-inactive level1 inactive irrigation">
<span class="vertnav-cat"><a href="http://dev.site.com/products/irrigation.html"><span>Irrigation</span></a></span>
</li>
<li class="last level1-inactive level1 inactive diagnostics">
<span class="vertnav-cat"><a href="http://dev.site.com/products/diagnostics.html"><span>Diagnostics</span></a></span>
</li>
</ul>
</li>
<li class="next level0-inactive level0 inactive contact-us">
<span class="vertnav-cat"><a href="http://dev.site.com/contact-us.html"><span>Contact Us</span></a></span>
</li>
<li class="last level0-inactive level0 inactive about-us">
<span class="vertnav-cat"><a href="http://dev.site.com/about-us.html"><span>About Us</span></a></span>
</li>
</ul>
Вот демонстрационная версия: http://jsfiddle.net/8EvRB/2/