随笔 - 2  文章 - 30 评论 - 7 阅读 - 24241
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

我在使用bootstrap3.0时,用了他的modal 功能打开一个模态框时,在关闭modal时,bootstrap没有清除它打开的样式,有余留样式,造成我的页面的滚动条消失了(打开modal前是有滚动条的),代码如下:

        ....省略部分代码

        $("#setRatioModal").modal("hide");

        showRation();//保存后,关闭modal后重新加载部分页面(包括modal的html)

        ....省略部分代码

打开前Dom如下:

 


关闭modal,并重新加载html后,Modal没有正常关闭,有残余样式和dom结构,如下:

后来询问前端的同事才知道,js虽然单线程往下执行,但当遇到样式渲染、dom操作时,就有同步异步的问题,也就是说,当$("#setRatioModal").modal("hide");执行完,但有可能modal('hide')里面的样式操作,dom操作还没有渲染完,showRation()方法就把页面刷新了或者加入了新的html,页面重新渲染,而modal可能还没有执行完样式删除,modal有样式残余,就出现了这个问题。

解决办法:

1.手动清除残余(这个有点土)

$(".modal-backdrop").remove();
$("body").removeClass('modal-open');

 

2.使用setTimeout函数调用后面的刷新代码

$("#setRatioModal").modal("hide");

setTimeout(function(){//延时加载页面
      showRation();
},500);
---------------------
作者:Jary
来源:CSDN
原文:https://blog.csdn.net/zhongyangjian/article/details/50853774
版权声明:本文为博主原创文章,转载请附上博文链接!

posted on   C#小学徒  阅读(894)  评论(1编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
点击右上角即可分享
微信分享提示