Хорошо, я чувствую себя как 800-фунтовая горилла, пытающаяся заправить иголку, когда дело доходит до jQuery. Мне нужен сценарий, который преформирует простое отображение / скрытие (желательно с хорошим скольжением) в списке.
Моя разметка выглядит так:
<div id="themes">
<h2>Research Themes</h2>
<ul>
<li class="tier_1"><a href="">Learn about our approach to the <strong>environment</strong></a>
<ul class="tier_2 hide">
<li><a href=""><em>How we are tying this all together</em></a></li>
<li><a href=""><strong>Project:</strong> Solor Powered Biofactories</a></li>
<li><a href=""><strong>Project:</strong> Cleaning Water with Nature</a></li>
<li><a href=""><strong>Project:</strong> Higher Efficiency Solar Technology</a></li>
</ul>
</li>
<li class="tier_1"><a href="">Learn about our approach to <strong>human health</strong></a>
<ul class="tier_2 hide">
<li><a href="">Project name numero uno goes here</a></li>
<li><a href="">Project name numero dos goes here</a></li>
<li><a href="">Project name numero tres goes here</a></li>
</ul>
</li>
<li class="tier_1"><a href="">Learn about our approach to <strong>national defense</strong></a>
<ul class="tier_2 hide">
<li><a href="">Project name numero uno goes here</a></li>
<li><a href="">Project name numero dos goes here</a></li>
<li><a href="">Project name numero tres goes here</a></li>
</ul>
</li>
</ul>
</div><!-- // end themes -->
Вы можете видеть, что у каждого вложенного ul есть класс "tier_2" и "hide". В идеале, при щелчке по li, в который они вложены ("li.tier_1"), его дочерний элемент ul удалит класс hide, а содержимое li, содержащееся в нем, выскользнет, но в то же время следует проверить все остальные ul.tier_2 и убедиться они получают класс скрытия - поэтому за один раз можно развернуть только одну тему.
Я настроил песочницу, чтобы попробовать кое-что: http://jsbin.com/odete/3
Мой JS выглядит так:
$(function(){
$(".tier_1 a").each(function(i,o){
$(this).click(function(e){
e.preventDefault();
$(this).addClass("show").siblings("ul").removeClass("show");
$("ul.tier_2:eq("+i+")").show().siblings("ul.tier_2").hide();
});
});
});
Совершенно глупый способ сделать это, я уверен. Но я основал его на другом сценарии, и он работает "немного", как вы можете видеть в песочнице.
Если бы один из вас имел в виду руки в jQuery, возможно, был бы настолько взволнован, чтобы взглянуть, я был бы очень благодарен. Если бы вы могли также посоветовать, как сделать переходы slideIn и Out, это также было бы здорово!