【发布时间】:2022-11-19 13:10:14
【问题描述】:
当前打开的手风琴在另一个打开时不会关闭。
这是我用的代码,不知道哪里错了。
<script>
$(document).ready(function () {
//each accordion has a text entry and a corresponding image
var accordionEntries = document.querySelectorAll('.accordion-entry');
var accordionImages = document.querySelectorAll('.accordion-image');
for ( var i = 0; i < accordionEntries.length; i++ ) {
accordionEntries[i].dataset.target = 'accordion-image-' + i;
accordionImages[i].classList.add('accordion-image-' + i);
}
//toggles accordion open state
$(document).on('click', '.accordion-header', function () {
if ($(this).is(".accordion-open")) return $(this).removeClass("accordion-open");
var parent = $(this).closest('.accordion-entry, .accordion-image');
if(!parent.hasClass('.accordion-open')){
parent.toggleClass('accordion-open');
} else {
$('.accordion-open').removeClass('accordion-open')
}
$('.' + parent.data('target')).toggleClass('accordion-open')
})
})
</script>
【问题讨论】:
-
每次打开手风琴时,您都可以使用
$('.accordion-open').removeClass('accordion-open')关闭所有打开的手风琴。 -
您希望一次只打开一个手风琴?如果是这样,您也应该关闭其他打开的手风琴。使用
.accordion-header.accordion-open之类的东西来选择所有打开的手风琴并删除accordion-open类。 -
@Geshode 我确实尝试过,但它会阻止当前打开的手风琴关闭。有没有办法可以将代码中的数字“.accordion-open”限制为 1?
-
如果您更改问题并添加手风琴 HTML,那就太好了。
标签: javascript jquery accordion