我正在尝试使用jQuery自己构建手风琴。这很简单,但我做不到。
这是我的HTML
<div id="three">
<dt><a href="#">click one</a></dt>
<dd>content one</dd>
<dt><a href="#">click two</a></dt>
<dd>content two</dd>
<dt><a href="#">click three</a></dt>
<dd>content three</dd>
</div>
这是我的剧本
$('dd').hide();
$('a').on('click', function(){
$(this).parent().next('dd').toggle('slow', function() {
});
$(this).parent().siblings('dd').hide();
})
点击dd
时,它会切换dt a
内容,但我也要关闭另一个已打开的dd
。
答案 0 :(得分:1)
点击隐藏
$('dd').hide();
$('a').on('click', function(){ $(this).parent().next('dd').toggle('slow').siblings('dd').hide('slow');
})
答案 1 :(得分:1)
我建议给出包含相应类的元素,以便您可以轻松找到手风琴的“根”:
<div id="three" class="accordion">
然后,您可以轻松找到其中的所有dd
元素并隐藏所有这些元素,但会隐藏所有元素:
$('a').on('click', function(){
var $dd = $(this).parent().next('dd');
// hide all others
$(this).closest('.accordion').find('dd').not($dd).hide();
$dd.toggle('slow');
});
一般情况下,如果您使用类而不是使用元素(例如.accordion-header
,.accordion-content
或类似的东西),并使用“相对”DOM遍历(.closest
)代替直接遍历($(this).parent()
),你可以使你的手风琴实现更灵活。
答案 2 :(得分:0)
在onclick
之前的hide all
toggling.
<{1}}
$('dd').hide();
$('a').on('click', function(){
$('dd').hide();
$(this).parent().next('dd').toggle('slow', function() {
});
})
答案 3 :(得分:0)
HI试试这个,
$(function() {
$( "#three" ).accordion();
});
您可以使用accordion
Jquery Ui
答案 4 :(得分:0)
尝试使用以下代码。
$('a').on('click', function(){
$(this).parent().parent().find('dd').stop(true,true).slideUp();
$(this).parent().next('dd').stop(true,true).slideDown();
});
答案 5 :(得分:0)