Django项目中jQuery toggle('slow')动画效果不生效问题排查
问题分析与解决方案
你的toggle('slow')动画不生效的核心原因是jQuery版本冲突且使用了无动画的slim版本,另外还有几个细节问题需要调整,下面一步步说明:
1. 核心问题:jQuery slim版缺失动画模块
你在页面中先后引入了两个jQuery版本:
- 先引入了完整的
jquery-3.3.1.min.js(包含动画模块,支持带参数的toggle动画) - 之后又引入了
jquery-3.3.1.slim.min.js(这个版本为了缩小体积,移除了动画、AJAX等非核心模块)
后面的slim版本会覆盖前面的完整版本,导致toggle('slow')依赖的动画功能被移除,所以'slow'参数完全失效。
解决方法:
删除slim版本的jQuery引入,只保留完整版本。请移除这段代码:
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
2. 优化初始显示状态(可选)
目前所有salle_detail区块默认都是显示状态,第一次点击只会触发隐藏动作,动画效果不明显。建议给这些区块添加Bootstrap的d-none类,设置初始隐藏:
<div class="salle_detail d-none" id="{{ s.name }}-content">
这样第一次点击时,区块会以缓慢动画展开,效果更直观。
3. 修复HTML拼写错误
代码里有一处明显的拼写错误,会导致样式失效:
<div clas=detail_capteur">
修正为:
<div class="detail_capteur">
4. 确保DOM加载完成后绑定事件
虽然你的JS代码放在页面底部,但最好把jQuery事件绑定代码包裹在$(document).ready()中,确保DOM完全加载后再执行绑定,避免元素未加载导致绑定失败:
$(document).ready(function() { {% for s in salle %} $( "#{{ s.name }}" ).click(function(event) { var className = "#{{ s.name }}" + '-content'; $(className).toggle('slow'); }); {% endfor %} });
完成以上修改后,点击.bloc-salle区块时,对应的salle_detail就会以缓慢的动画效果切换显示/隐藏状态了。
内容的提问来源于stack exchange,提问作者FrancNovation
相关产品推荐
相关产品推荐

