我正在尝试使用jQuery制作'手风琴'效果。我已经设法让它工作只有当我的'h5'点击所有div打开时,它应该只是下一个div。
$('.accordion h5').click(function() {
$('.accordion h5').next().slideToggle('slow', function() {
// Animation complete.
});
});
我做了一个小提琴,所以你可以看到我的意思:http://jsfiddle.net/GnAhs/1/
答案 0 :(得分:1)
在点击功能中你有这个:
$('.accordion h5').next().slideToggle('slow', function() { ...
$( '.accordion h5' )
匹配h5
div中的每个.accordion
,因此每个人都会被切换。将选择器更改为this
,以便它仅影响单击的元素。
$('.accordion h5').click(function() {
$( this ).next().slideToggle('slow', function() {
// Animation complete.
});
});
答案 1 :(得分:0)
您需要使用this
:
$('.accordion h5').click(function() {
$(this).next().slideToggle('slow', function() {
// Animation complete.
});
});
this
事件的回调函数内的 click
始终链接到已单击的元素。因此,您选择单击的元素,然后选择$(this).next()
的下一个元素。
这是一个有效的演示:http://jsfiddle.net/GnAhs/2/
答案 2 :(得分:0)
只需编写$(this).next()
代替$('.accordion h5').next()
,即匹配代码中的所有.accordion h5
$('.accordion h5').click(function() {
/*change this->*/$(this).next().slideToggle('slow', function() {
// Animation complete.
});
});
答案 3 :(得分:0)
$('.accordion h5').click(function(){
$(this).next("div").slideToggle('slow', function() {
// Animation complete.
});
});
答案 4 :(得分:0)
您只需要更改SlideToggle的选择器
而不是$('.accordion h5').next().slideToggle()
您需要指定$(this).next().slideToggle()