javascript - CSS/Javascript 可折叠部分不关闭
问题描述
我有可折叠的部分,单击时应该打开和关闭,但是目前它们一旦打开就不会关闭。
在此处查看用例:用例
我正在使用以下代码:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('.markdown-block .sqs-block-content h3').addClass('ui-closed').css('cursor','pointer');
$('.markdown-block .sqs-block-content h3').css('cursor','pointer');
$(".markdown-block .sqs-block-content h3").nextUntil("h3").slideToggle();
$(".markdown-block .sqs-block-content h3").click(function() {
$(".markdown-block .sqs-block-content h3").nextUntil("h3").slideUp();
$(".markdown-block .sqs-block-content h3").removeClass('ui-open');
$(".markdown-block .sqs-block-content h3").addClass('ui-closed');
$(this).nextUntil("h3").slideDown();
$(this).toggleClass('ui-closed ui-open');
});
});
</script>
我怎样才能修改它,以便它在打开后折叠?
解决方案
这里的问题是您没有对何时设置打开/关闭状态应用条件。因此,每次单击都会立即触发所有操作(同时打开和关闭),并且由于 slideDown 是最后一个操作,因此它在第一次单击时“起作用”。但是,当您希望它关闭时,由于最后调用 slideDown 的代码,它总是会重新打开。通过使用 IF 语句并分离行为,元素将根据应用于元素的当前类展开/关闭。
下面的脚本是一个可行的例子。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('.markdown-block .sqs-block-content h3').addClass('ui-closed').css('cursor','pointer');
$('.markdown-block .sqs-block-content h3').css('cursor','pointer');
$(".markdown-block .sqs-block-content h3").nextUntil("h3").slideToggle();
$(".markdown-block .sqs-block-content h3").click(function() {
if ( $(this).hasClass('ui-open')) {
$(".markdown-block .sqs-block-content h3").nextUntil("h3").slideUp();
$(".markdown-block .sqs-block-content h3").removeClass('ui-open');
$(".markdown-block .sqs-block-content h3").addClass('ui-closed');
} else {
$(".markdown-block .sqs-block-content h3").nextUntil("h3").slideDown();
$(".markdown-block .sqs-block-content h3").removeClass('ui-closed');
$(".markdown-block .sqs-block-content h3").addClass('ui-open');
}
});
});
</script>
推荐阅读
- oop - 如何使不是其抽象类的子类的接口实现者表现得像该接口的抽象类?
- javascript - 仅使用 JavaScript(无 PHP 或服务器端)创建基本登录/注册系统?
- python - 分类报告
- java - 使用 java 从 .xlsx 文件中读取特定信息
- elasticsearch - 使用 Elasticsearch Sink Connector for Kafka 从两个由下划线分隔的值字段创建文档 ID
- c# - 高圈复杂度会影响构建时间吗?
- android - Android 或 iOS 应用程序能否确定其主机设备是否由移动设备管理 (MDM) 解决方案配置?
- excel - 单击复选框仅适用于第一个实例 VBA Selenium(元素单击被拦截)
- list - 随机分配一个项目到一个列表
- translation - Lokalise:如何为特定分支使用`include_pids`