手风琴菜单 - 单击一个按钮时如何停止打开所有按钮?
Accordion menu - how to stop all buttons opening when one is clicked?
是否有一种简单的方法来调整下面的代码,以便只有单击的按钮才会 运行 下面的 slideDown / slideUp 代码?我有 5 个带有下方 html 的按钮。
我知道代码并不理想,但我是初学者,它是为了测试,所以我想修改下面的代码,以便在被质疑时进行辩护
Html:
<div class="accordion">
<button type= "button" class="question">
<p>This is a question</p>
</button>
</div>
<div class="answer">
<p>This is the answer</p>
</div>
Javascript
$('.question').on('click', function(){
if ($('.answer').is(':visible')) {
$('.answer').slideUp()
} else {
$('.answer').slideDown()
}
})
您必须指定答案
$('.question').on('click', function(){
let answer = $(this).siblings('.answer')
//Or depend on the position find() closest() next()
if (answer.is(':visible')) {
answer.slideUp()
} else {
answer.slideDown()
}
})
事实上,现在我看到了结构 - 最好的方法是将 data-id 属性设置为问题和答案 class = answer answer-1。
选择器将让 answer = $('.answer-' + $(this).data('id'))
现在有点旧了,但如果对寻找答案的人有帮助,这是我使用的代码:
$('button').on('click', function() {
const $answer = $(this).parent().next()
const $triangle = $(this).find('p')
if ($answer.is(':visible')) {
$answer.slideUp()
$triangle.text("\u25BC")
} else {
$answer.slideDown()
$triangle.text("\u25B2")
}
})
是否有一种简单的方法来调整下面的代码,以便只有单击的按钮才会 运行 下面的 slideDown / slideUp 代码?我有 5 个带有下方 html 的按钮。
我知道代码并不理想,但我是初学者,它是为了测试,所以我想修改下面的代码,以便在被质疑时进行辩护
Html:
<div class="accordion">
<button type= "button" class="question">
<p>This is a question</p>
</button>
</div>
<div class="answer">
<p>This is the answer</p>
</div>
Javascript
$('.question').on('click', function(){
if ($('.answer').is(':visible')) {
$('.answer').slideUp()
} else {
$('.answer').slideDown()
}
})
您必须指定答案
$('.question').on('click', function(){
let answer = $(this).siblings('.answer')
//Or depend on the position find() closest() next()
if (answer.is(':visible')) {
answer.slideUp()
} else {
answer.slideDown()
}
})
事实上,现在我看到了结构 - 最好的方法是将 data-id 属性设置为问题和答案 class = answer answer-1。 选择器将让 answer = $('.answer-' + $(this).data('id'))
现在有点旧了,但如果对寻找答案的人有帮助,这是我使用的代码:
$('button').on('click', function() {
const $answer = $(this).parent().next()
const $triangle = $(this).find('p')
if ($answer.is(':visible')) {
$answer.slideUp()
$triangle.text("\u25BC")
} else {
$answer.slideDown()
$triangle.text("\u25B2")
}
})