我有以下代码用于常见问题列表之类的。当用户单击按钮时,信息会向下滑动以显示内容。然后他们可以单击相同的按钮来关闭内容。
由于我在此页面上有多个列表,我想要的是,如果一个列表已打开并且用户单击另一个列表将其打开,则打开的列表将关闭,而另一个列表将打开。这样用户就没有一英里长的滚动条。
这是我的代码:
JS
$('.service').live('click',function(){
$(this).parent().children().toggle(); //swaps the display:none between the two spans
$(this).parent().parent().find('.content').slideToggle(); //swap the display of the main content with slide action
});
$('.service').click(function(e) {
e.preventDefault(); //Prevents link from taking them to top of page
});
HTML
<div class="service-container">
<div class='service-title'>
<a href="#" class="service fancy_button"><span style="background-color: #0f071e;"><i class="icon-plus"></i> Open</span></a>
<a href="#" class="service fancy_button" style="display:none;"><span style="background-color: #666;"><i class="icon-minus"></i> Close</span></a>
</div>
<div class='content' style='display:none;'>
<p>My Content</p>
</div>
</div>
如果有更好的方法,我不介意重写代码。
想法: