
本文旨在解决使用jquery实现可折叠侧边栏菜单时,页面加载后首次展开需要双击的问题。通过分析问题根源——j*ascript内部状态与ui初始状态不一致,提供调整`toggle`变量初始值的解决方案,确保菜单功能在首次交互时即能正常响应,并附带完整的代码示例和最佳实践建议。
在前端开发中,可折叠侧边栏菜单是一种常见的交互元素,它能有效节省屏幕空间。然而,开发者有时会遇到一个特定问题:当侧边栏在页面加载时默认处于折叠状态,但用户首次点击展开按钮时,却需要点击两次才能使其展开。本文将深入分析这一问题,并提供一个简洁有效的解决方案。
假设我们有一个基于jQuery实现的侧边栏菜单,其行为通过一个布尔类型的toggle变量来控制展开和折叠状态。在页面加载时,我们通过添加CSS类.sidebar-collapsed来使侧边栏默认处于折叠状态。预期的行为是,用户点击侧边栏的图标后,菜单能够立即展开。然而,实际情况是第一次点击无效,第二次点击才正常工作,之后每次点击都正常。
以下是原始的J*aScript代码片段,展示了导致此问题的逻辑:
var toggle = true; // 初始状态为true
$(".page-container").addClass("sidebar-collapsed"); // 页面加载时强制折叠
$(".sidebar-icon").click(function() {
if (toggle) {
// 当toggle为true时,执行折叠操作
$(".page-container").addClass("sidebar-collapsed").removeClass("sidebar-collapsed-back");
$("#menu span").css({"position":"absolute"});
} else {
// 当toggle为false时,执行展开操作
$(".page-container").removeClass("sidebar-collapsed").addClass("sidebar-collapsed-back");
setTimeout(function() {
$("#menu span").css({"position":"relative"});
}, 400);
}
toggle = !toggle; // 翻转toggle状态
});问题的核心在于J*aScript中的toggle变量的初始状态与DOM元素的实际视觉状态不一致。
简而言之,J*aScript的内部状态(toggle = true表示“已展开”或“将要折叠”)与UI的实际状态(侧边栏已折叠)不匹配,导致第一次点击未能触发预期的展开动作。
MarsCode
字节跳动旗下的免费AI编程工具
339
查看详情
要解决此问题,只需确保J*aScript的toggle变量的初始状态与侧边栏在页面加载时的实际视觉状态保持一致。由于侧边栏在页面加载时通过sidebar-collapsed类被设置为折叠状态,那么toggle变量就应该被初始化为false,以表示当前处于折叠状态(即下一次点击应该执行展开操作)。
将var toggle = true;修改为var toggle = false;即可。
// 确保jQuery库已加载
// <script src="https://code.jquery.com/jquery-3.6.4.slim.min.js"></script>
var toggle = false; // 修正:初始状态设为false,与页面加载时的折叠状态匹配
$(".page-container").addClass("sidebar-collapsed"); // 页面加载时强制折叠
$(".sidebar-icon").click(function() {
if (toggle) {
// 当toggle为true时,表示当前是展开状态,点击后应折叠
$(".page-container").addClass("sidebar-collapsed").removeClass("sidebar-collapsed-back");
$("#menu span").css({"position":"absolute"});
} else {
// 当toggle为false时,表示当前是折叠状态,点击后应展开
$(".page-container").removeClass("sidebar-collapsed").addClass("sidebar-collapsed-back");
setTimeout(function() {
$("#menu span").css({"position":"relative"});
}, 400);
}
toggle = !toggle; // 翻转toggle状态
});为了提供一个完整的、可运行的示例,我们将包含HTML结构、CSS样式和修正后的J*aScript代码。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>可折叠侧边栏菜单</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="page-container">
<div class="sidebar-menu">
<div class="logo">
<a href="#" class="sidebar-icon">
<svg width="37" height="26" viewBox="0 0 37 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M27.6667 9.33333H2M35 2H2M35 16.6667H2M27.6667 24H2" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
</div>
<div class="menu">
<ul id="menu">
<li><a href="#"><!-- SVG icon --><svg width="36" height="33" viewBox="0 0 36 33" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15.0051 31.5649V29.7669C15.0051 28.8132 14.6339 27.8986 13.9731 27.2242C13.3122 26.5499 12.4159 26.171 11.4814 26.171H4.4339C3.49935 26.171 2.60307 26.5499 1.94224 27.2242C1.28141 27.8986 0.910156 28.8132 0.910156 29.7669V31.5649M11.4814 18.9792C11.4814 20.9652 9.90376 22.5751 7.95765 22.5751C6.01153 22.5751 4.4339 20.9652 4.4339 18.9792C4.4339 16.9932 6.01153 15.3833 7.95765 15.3833C9.90376 15.3833 11.4814 16.9932 11.4814 18.9792Z" stroke="white" stroke-width="1.71232" stroke-linecap="round" stroke-linejoin="round"/><path d="M34.386 31.5649V29.7669C34.386 28.8132 34.0147 27.8986 33.3539 27.2242C32.6931 26.5499 31.7968 26.171 30.8622 26.171H23.8148C22.8802 26.171 21.9839 26.5499 21.3231 27.2242C20.6623 27.8986 20.291 28.8132 20.291 29.7669V31.5649M30.8622 18.9792C30.8622 20.9652 29.2846 22.5751 27.3385 22.5751C25.3924 22.5751 23.8148 20.9652 23.8148 18.9792C23.8148 16.9932 25.3924 15.3833 27.3385 15.3833C29.2846 15.3833 30.8622 16.9932 30.8622 18.9792Z" stroke="white" stroke-width="1.71232" stroke-linecap="round" stroke-linejoin="round"/><path d="M32.624 6.09421C32.626 6.88523 32.4449 7.66555 32.0954 8.37161C31.681 9.21769 31.044 9.92934 30.2557 10.4268C29.4674 10.9243 28.5589 11.188 27.632 11.1884C26.8568 11.1905 26.0922 11.0056 25.4003 10.649L22.0527 11.7877L23.1686 8.37161C22.8191 7.66555 22.638 6.88523 22.64 6.09421C22.6404 5.14834 22.8988 4.22125 23.3863 3.41679C23.8738 2.61233 24.5712 1.96226 25.4003 1.5394C26.0922 1.18277 26.856
8 0.997955 27.632 1.00002H27.9256C29.1497 1.06893 30.3059 1.59619 31.1728 2.48084C32.0397 3.36549 32.5564 4.54536 32.624 5.79455V6.09421Z" stroke="white" stroke-width="0.933995" stroke-linecap="round" stroke-linejoin="round"/><path d="M2.67292 6.09421C2.6709 6.88522 2.85201 7.66554 3.20148 8.37161C3.61586 9.21769 4.25288 9.92934 5.0412 10.4268C5.82952 10.9243 6.738 11.188 7.66489 11.1884C8.44003 11.1905 9.20469 11.0056 9.89659 10.649L13.2441 11.7877L12.1283 8.37161C12.4778 7.66554 12.6589 6.88522 12.6569 6.09421C12.6565 5.14834 12.3981 4.22125 11.9106 3.41679C11.4231 2.61233 10.7257 1.96226 9.89659 1.5394C9.20469 1.18277 8.44003 0.997955 7.66489 1.00002H7.37124C6.14713 1.06893 4.99093 1.59619 4.12403 2.48084C3.25714 3.36549 2.74046 4.54536 2.67292 5.79455V6.09421Z" stroke="white" stroke-width="0.933995" stroke-linecap="round" stroke-linejoin="round"/></svg><span>Counseling</span></a></li>
<li><a href="#"><!-- SVG icon --><svg width="24" height="27" viewBox="0 0 24 27" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M22.6111 25.6401V23.0134C22.6111 21.6201 22.0576 20.2839 21.0724 19.2987C20.0872 18.3135 18.751 17.7601 17.3577 17.7601H6.85101C5.45773 17.7601 4.12152 18.3135 3.13633 19.2987C2.15113 20.2839 1.59766 21.6201 1.59766 23.0134V25.6401M17.3577 7.25335C17.3577 10.1547 15.0057 12.5067 12.1044 12.5067C9.20302 12.5067 6.85101 10.1547 6.85101 7.25335C6.85101 4.35201 9.20302 2 12.1044 2C15.0057 2 17.3577 4.35201 17.3577 7.25335Z" stroke="white" stroke-width="2.62668" stroke-linecap="round" stroke-linejoin="round"/></svg><span>Coaching</span></a></li>
<li><a href="#"><!-- SVG icon --><svg width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M21.7879 7.68604H14.1466C13.64 7.68604 13.1541 7.8873 12.7958 8.24555C12.4376 8.6038 12.2363 9.0897 12.2363 9.59635V24.8788C12.2363 25.3855 12.4376 25.8714 12.7958 26.2296C13.1541 26.5879 13.64 26.7891 14.1466 26.7891H25.6085C26.1151 26.7891 26.601 26.5879 26.9593 26.2296C27.3175 25.8714 27.5188 25.3855 27.5188 24.8788V13.417M21.7879 7.68604L27.5188 13.417M21.7879 7.68604V13.417H27.5188M23.6982 18.1927H16.0569M23.6982 22.0134H16.0569M17.9673 14.3721H16.0569" stroke="white" stroke-width="1.91031" stroke-linecap="round" stroke-linejoin="round"/><path d="M20.8336 5.77578C20.8336 5.26913 20.6323 4.78324 20.2741 4.42498C19.9158 4.06673 19.4299 3.86547 18.9233 3.86547H10.3269L8.41656 1H3.64078C3.13413 1 2.64824 1.20126 2.28999 1.55952C1.93173 1.91777 1.73047 2.40366 1.73047 2.91031V16.2825C1.73047 16.7891 1.93173 17.275 2.28999 17.6333C2.64824 17.99以上就是解决jQuery侧边栏菜单初始化双击展开问题的详细内容,更多请关注其它相关文章!
# 布尔
# 企业网站搜索推广关键词
# 南园网站推广优化
# 淘宝怎么上关键词排名
# 关键词排名查询联系p火26星
# 广东优化网站建设
# 网站推广型号参数及原理
# 房产网站建设案例展示
# 百度关键词优化排名推广
# 装饰网站建设知识分享
# 定制网站建设技术公司
# 量为
# 设置为
# 提供一个
# 可折叠
# 自定义
# css
# 复选框
# 首次
# 双击
# 加载
# css样式
# ai
# 前端开发
# svg
# go
# 前端
# js
# html
# jquery
# java
# javascript
相关文章:
星露谷物语官网入口 星露谷物语游戏官网入口
自动化J*a应用中GitHub CLI或REST API的认证与交互
Django表单验证失败时保留用户输入数据的最佳实践
Django模型中自动计算可用余额的实现方法
J*aScript中在Map循环中检测并处理空数组元素
PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符
win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】
J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析
批改网学生版PC登录 批改网官网登录系统入口
邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧
Win10快速启动功能利弊分析 Win10开启或关闭快速启动教程【技巧】
多闪网页版在线观看免费入口_多闪官网访问入口
win11如何加载ICC颜色配置文件 Win11校色文件安装与显示器色彩管理【指南】
PHP 枚举:根据字符串获取枚举案例的策略与实现
深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量
steam官方入口大全 steam账号注册及操作指南
Eclipse怎么运行工程_Eclipse工程运行配置说明
Python中高效且防溢出的双曲正弦计算:基于对数空间的优化策略
qq游戏跨平台入口_qq游戏多设备同步登录
C++ map遍历方法大全_C++ map迭代器使用总结
Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式
Mac怎么锁定备忘录_Mac备忘录加密设置教程
Tabulator表格日期时间排序问题及自定义解决方案
如何设置Windows Defender的定时扫描_计划任务实现自动杀毒【安全】
Win11怎么开启高性能模式_Windows 11电源计划优化设置
微博网页版首页入口 微博电脑端官网登录链接
Win11输入法不见了怎么办_Windows11恢复语言栏显示方法
Sublime Text怎么设置垂直标尺_Sublime配置Rulers规范代码长度
俄罗斯浏览器官网直达链接 俄罗斯浏览器最新在线入口导航
Walmart退货API集成指南:PHP cURL实现与常见问题解析
Basecamp怎样用留言钉固定重点_Basecamp用留言钉固定重点【重点标记】
美团外卖商家服务中心入口 美团商家版官网入口
在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析
Yandex免登录网页版地址 Yandex搜索引擎官方访问入口
C#如何安全地从用户上传的XML文件中读取数据? 验证与清理策略
Web Components中自定义开关组件状态同步的常见陷阱与解决方案
Lar*el Form Request中唯一性验证在更新操作中的正确实现
KFC游戏互动怎么赢取优惠券_KFC线上游戏活动参与与优惠代码赢取教程
Python实时数据流中的动态最值查找策略
PHP教程:高效从URL路径中提取倒数第二个片段
在J*a中如何开发简易博客标签推荐系统_博客标签推荐项目实战解析
CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示
从J*aScript对象中精确提取指定属性的教程
Shopware订单对象中获取产品自定义字段的正确方法
Python中如何避免重复条件判断:利用数据结构实现动态逻辑
C++如何实现异步操作_C++11使用std::future和std::async进行异步编程
126邮箱账号注册 电脑版登录入口
outlook中文官网入口地址 outlook官方中文版直达首页链接
葱吃多了会怎样 葱吃多了会伤胃吗
漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口
*请认真填写需求信息,我们会在24小时内与您取得联系。