动态添加元素css丢失的终极解决办法

在Jquerymoblie的使用过程中,动态添加元素后css丢失。

这个问题在之前JqueryMobile使用心得(3)中我已经说明了其原因(因为页面标签首先经过jquery.mobile-1.0a2.min.js的处理,添加了许多标签,然后再用css布局),并且给出了一种解决方法:动态加载jquery.mobile-1.0a2.min.js。

但是经过测试,上面这种方法并不好。首先异步加载造成用户可以看到没有加载JS的页面,并且JS加载过一次后,如果再要动态添加新元素的话,就意味着多次加载JS文件,显示问题先不说,这效率也堪忧。

因此必须提出新方法。

新方法有两个,调用JS的顺序与普通方式相同,都别动态添加JS。

一是将按照jquery.mobile-1.0a2.min.js处理过后的样式,来动态添加元素。jquery.mobile-1.0a2.min.js处理过后的样式可以通过chrome浏览器的审查元素功能看到。这个办法的缺点很明显:添加了很多奇怪的标签。

例如:

一般情形下动态添加元素:

onelist = "<li><img src='stylesheets/images/file_icon/" + SwitchIcon($obj[i].wext) + "' class='ui-li-icon'/><a href='#' ";

if($obj[i].wtype == "dir"){//文件夹

onelist += "onclick=\"GetShowMyList(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";

}else{//非文件夹直接下载

onelist += "onclick=\"download(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";



按照jquery.mobile-1.0a2.min.js处理过后的样式,来动态添加元素:



onelist = "<li class='ui-li-has-icon ui-btn ui-btn-icon-right ui-li ui-li-has-alt ui-btn-up-c' role='option' tabindex='0' data-theme='c'>" +

"<div class='ui-btn-inner'>" +

"<div class='ui-btn-text'>" +

"<img class='ui-li-icon ui-li-thumb' src='stylesheets/images/file_icon/" + SwitchIcon($obj[i].wext) + "' />" +

"<a class='ui-link-inherit' href='#' ";

if($obj[i].wtype == "dir"){//文件夹

onelist += "onclick=\"GetShowMyList(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a>" +

"<span class='ui-li-count ui-btn-up-c ui-btn-corner-all'>" + CountSize($obj[i].wsize) + "</span>" +

"<a class='ui-li-link-alt ui-btn ui-btn-up-c' href='dialog/operatefile.html' title='操作' data-theme='c'>" +

"<span class='ui-btn-inner'>" +

"<span class='ui-btn-text'></span>" +

"<span class='ui-btn ui-btn-up-d ui-btn-icon-notext ui-btn-corner-all ui-shadow' data-theme='d'>" +

"<span class='ui-btn-inner ui-btn-corner-all'>" +

"<span class='ui-icon ui-icon-gear ui-icon-shadow'></span>" +

"</span>" +

"</span>" +

"</span>" +

"</a></div></div></li>";

}else{//非文件夹直接下载

onelist += "onclick=\"download(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a>" +

"<span class='ui-li-count ui-btn-up-c ui-btn-corner-all'>" + CountSize($obj[i].wsize) + "</span>" +

"<a class='ui-li-link-alt ui-btn ui-btn-up-c' href='dialog/operatefile.html' title='操作' data-theme='c'>" +

"<span class='ui-btn-inner'>" +

"<span class='ui-btn-text'></span>" +

"<span class='ui-btn ui-btn-up-d ui-btn-icon-notext ui-btn-corner-all ui-shadow' data-theme='d'>" +

"<span class='ui-btn-inner ui-btn-corner-all'>" +

"<span class='ui-icon ui-icon-gear ui-icon-shadow'></span>" +

"</span>" +

"</span>" +

"</span>" +

"</a></div></div></li>";

}

}



瞧这多了多少代码啊!不过这也是JueryMobile UI前端实际最终处理的代码量。

方法二:refresh

其实JueryMobile 中早就封装了refresh方法。你只需要对新添加的元素节点refresh一下就可以了。

例如: $("#节点名").listview("refresh");

还是刚才那个函数,采用普通的动态添加元素方法,最后加个refresh就搞定了。



function ShowMyListOK(){//处理根目录文件列表函数

if( $glb_result == ""){

alert("返回为空!请重新登录!");

}else{

//alert("成功: "+$glb_result);

$("#wlist").empty();

var $obj = jQuery.parseJSON($glb_result);

var onelist = "";

$.each( $obj, function(i, n){

if( $obj[i].wname != ""){

onelist = "<li><img src='stylesheets/images/file_icon/" + SwitchIcon($obj[i].wext) + "' class='ui-li-icon'/><a href='#' ";

if($obj[i].wtype == "dir"){//文件夹

onelist += "onclick=\"GetShowMyList(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";

}else{//非文件夹直接下载

onelist += "onclick=\"download(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";

}

$("#wlist").append(onelist);

}

});

$("#wlist").listview("refresh");

}

}



这个方法很好,但是为什么没有早点发现呢?因为jquery.mobile-1.0a2.js的源码确实很不好读。本人JS水平有限,看到里面内容后,以为调用里面方法必须创建对象,误解了JQuery的原意。试了半天才搞出来,必须发帖纪录一下这个小成功。


http://hi.baidu.com/%CE%F7%B1%B1%C5%DD%C3%E6%CD%F5/blog/item/e743654de9424a24afc3ab8b.html
ElementUI时间线嵌套问题终极解决方案:子节点不显示的CSS魔法 本文深入解析了ElementUI时间线组件在嵌套使用时子节点连接线不显示的问题根源,即CSS的`:last-child`伪类选择器与`!important`声明导致的样式冲突。文章提供了从诊断、CSS权重博弈到实战案例的完整解决方案,通过提升选择器特异性、动态类绑定和精准样式覆盖,帮助开发者优雅地解决这一常见难题,实现多层时间线的完美展示。 阅读详情

相关推荐

解决vue-print-nb打印样式丢失的三大实战技巧

本文针对Vue项目中vue-print-nb插件打印时样式丢失的常见问题,提供了三大实战解决方案。首先,通过创建样式隔离的独立容器并善用内联样式,确保样式被完整复制。其次,合理运用打印媒体查询与非Scoped样式,解决样式作用域问题。最后,介绍了深度调试技巧与浏览器打印设置要点,帮助开发者彻底解决打印样式难题。

weixin_29005499的博客 144

关于jquery动态改变css样式后,对象获取不到的解决办法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34357436的博客 631

Windows Server 2019/2022 RDS 授权实战:3步激活许可证服务器,解决120天宽限期问题

本文详细介绍了Windows Server 2019/2022 RDS授权实战,提供3步激活许可证服务器的完整解决方案,解决120天宽限期问题。涵盖远程桌面授权服务器配置、许可证激活方法及组策略设置,确保企业合规使用远程桌面服务。

weixin_32705179的博客 991

动态拼接HTML css无效,js的append拼接html丢失css样式解决

JS调用中文乱码怎么办网络上有很多的实用的小插件,这些小插件可以直接拿过来实用即可,但是在使用的时候会出现很多的问题,就比如与说今天要讲的乱码中文乱码的问题,这个主要是因为我们调用的js和我们写的程序使用的编码不同,那么如 ...C&plus;&plus;中vector的用法C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中...

weixin_39981185的博客 1022

华为手环实时心率数据导出到UWP项目中

hello大家好呀O(∩_∩)O最近在做毕设 其中有个小功能要用到实时心率数据。查找网上的资料发现只有小米手环的实时心率数据导出但是没有华为手环的,我试了华为手环但是并不能行得通哈哈哈。现在分享一下华为手环实时心率数据导出的代码。

apple_63713858的博客 1583

jmeter问题系列:Begin size 0 is not equal to fixed size 5

Begin size 0 is not equal to fixed size 5 ,问题的解决

雨水的早晨的博客 2415

js动态添加HTML css失效,JS动态添加元素和设置其样式问题

html代码中id="img_list" 是需要动态添加的容器,id="append"里面是静态元素,动态元素和静态元素通用css样式。其问题主要出在动态的所有 class="zhezhao"的节点样式(鼠标滑过时透明度变化)。问题1:如何让动态元素class="zhezhao"部分显示正确的样式?问题2:静态css样式大部分在动态元素上显示正常,但这样应用是否合理?就是说静态元素应用静态样式,...

weixin_42463199的博客 3856

伺服电机入门01

编码器输出 旋转信号 , 接收端: 使用ADC 捕捉旋转信号 ,转成数字信号,驱动器得到数字处理, 因为信号量是模拟信号, mcu mpu 等芯片通常内部处理是数字,通过adc 得到数字cpu 才能识别 传输过来的pos 等信息。IPM 芯片示例, IRAM256A 这个芯片已经停产,有换新的,,下面示例来自stmbl 高功率方案,4 步进电机 有全步控制,半步控制 ,微步控制,FOC控制,步进电机也是可以做伺服系统的。以下面几种信号是可以细分,也就是通过细分增加编码器的分辨率,

qq_25160559的博客 972

html 修改li标签样式,为li标签添加class并修改CSS样式,为什么会无效?

HTML写了一个普通的列表美术部艺术部高考部春考部数控部电信部财经部专业介绍因为最后一个按钮多一个字的原因,要修改使最后一个按钮的padding有别于其他的padding,我的解决方法是给他们分别添加不同的class(请问有什么其他更好的解决方法吗?),3字的是.3t,4字的是.4t。.major {padding-top: 30px;}.buttons {height: 350px;paddin...

weixin_35275781的博客 760

SUMO仿真教程(1) ——安装环境的设置(Windows 10系统)

SUMO安装环境的设置 目录一.SUMO下载的官方网址二.下载步骤:三.环境设置:1.打开设置环境变量的界面2.用户(Administrator)变量设置3.系统变量设置四.总述 一.SUMO下载的官方网址 sumo的下载地址: 二.下载步骤: 1.以sumo1.8.0为示例进行演示,点击下载地址; 2.选择Windows64位的安装版本,如下图所示: 3.点击对应版本会跳转到如下图所示的界面,等待几秒后会自动下载(温馨提示:请将下载路径提前设置好): 4.到目标存储路径下查看下载完成的SUMO(本

weixin_50632459的博客 1万+

6.4 直流无刷电机(BLDC):测试与性能评估

本文系统阐述了直流无刷电机(BLDC)的测试与性能评估方法,涵盖参数测量、性能测试、测试平台设计及可靠性评估。详细介绍了绕组电阻、电感和反电动势的测量原理与修正方法,以及转矩-转速特性、效率分析和动态响应测试的技术要点。通过搭建高精度测功机系统,结合自动化数据处理,实现对电机性能的全面评估。最后讨论了温升、振动、EMC等特殊测试方法,为BLDC电机的设计验证和质量控制提供了完整的技术路径。

技术工作者 446

JqueryMobile 动态添加元素css丢失的终极解决办法

JqueryMobile使用心得(4)动态添加元素css丢失的终极解决办法 2011-01-11 15:29       在Jquerymoblie的使用过程中,动态添加元素后css丢失。       这个问题在之前JqueryMobile使用心得(3)中我已经说明了其原因(因为页面标签首先经过jquery.mobile-1.0a2.min.js的处理,添加了许多标签

1万+

第八届传智杯WPS智能办公能力挑战赛练习题库

本文是关于WPS Office软件操作知识的选择题汇总,内容涵盖WPS文字、表格和演示三大组件的常用功能。主要包括:云文档协同编辑、文本框插入、幻灯片打印设置、数据排序与筛选、函数应用(如SUMIF、COUNT)、动画效果设置、格式刷使用、页眉页脚设置、单元格引用类型等基础操作要点。同时涉及计算机基础概念如二进制、ROM存储器等。题目以单选和多选形式呈现,附带详细答案解析,全面检验用户对WPS办公软件的功能掌握程度和实际操作能力,适用于办公软件技能培训和水平测试。

qq_73044452的博客 1435

JqueryMobile使用心得(4)动态添加元素css丢失的终极解决办法

在Jquerymoblie的使用过程中,动态添加元素后css丢失。       这个问题在之前JqueryMobile使用心得(3)中我已经说明了其原因(因为页面标签首先经过jquery.mobile-1.0a2.min.js的处理,添加了许多标签,然后再用css布局),并且给出了一种解决方法:动态加载jquery.mobile-1.0a2.min.js。       但是经过测试,上面这种方

tianyitianyi1的专栏 3907

HFSS实战项目——高带外抑制特性SIW带通滤波器

本文对单级滤波器和双级滤波器的设计、工作原理及仿真结果进行了详细分析,并验证了双级SIW带通滤波器在性能方面的优越性,为微波通信系统中滤波器的设计和应用提供了重要参考。

2401_87464239的博客 1816

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

终极Tailwind CSS优化指南:如何将Next.js博客CSS体积减少80%

想要让你的Tailwind Next.js Starter Blog项目加载更快、性能更优吗?通过正确的PurgeCSS配置,你可以显著减少CSS文件体积,提升网站加载速度。本文将为你提供完整的CSS优化配置指南,让你的博客在性能和用户体验上获得质的飞跃。🚀 ## 为什么需要优化Tailwind CSS体积? Tailwind CSS是一个功能强大的原子CSS框架,但默认包含所有可能的类名,

gitblog_00234的博客 465

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Linaria动态主题持久化:保存用户主题偏好的终极指南

在现代Web开发中,动态主题系统已成为提升用户体验的关键功能。Linaria作为零运行时CSS-in-JS库,通过其强大的编译时特性,为开发者提供了构建高性能动态主题系统的完美解决方案。本文将详细介绍如何实现Linaria动态主题的持久化,确保用户的主题偏好能够在不同会话间得到保存和恢复。 ## 为什么需要主题持久化? 当用户选择深色模式或自定义配色方案后,如果没有持久化机制,每次刷新页面或重

gitblog_00799的博客 1028

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

解决Element Plus自动导入导致Divider组件样式丢失的终极方案

你是否遇到过这样的情况:在使用Element Plus开发Vue 3项目时,明明已经通过自动导入功能引入了Divider(分隔线)组件,代码编译也没有报错,但页面上的分隔线却完全没有样式?这种"隐形"的UI问题不仅影响界面美观,还可能导致用户体验下降。本文将深入分析这一常见问题的技术根源,并提供三种经过验证的解决方案,帮助你彻底解决自动导入模式下的样式丢失难题。 ## 问题现象与技术背景 El...

gitblog_00739的博客 424

性能优化终极对决:UnCSS与PurgeCSS谁才是CSS精简之王?

你是否也曾面临这样的困境:精心编写的CSS文件随着项目迭代变得臃肿不堪,大量未使用的样式规则像赘肉一样拖慢页面加载速度?根据HTTP Archive统计,全球Top1000网站平均CSS文件体积达78KB,其中30%-50%为未使用代码。本文将通过实战对比两款热门CSS优化工具——UnCSS与PurgeCSS,帮你找到最适合项目的"瘦身利器"。读完本文你将获得: - 两款工具的核心工作原理对比 -...

gitblog_00636的博客 765

PyInstaller报错终极指南:从资源丢失到路径问题的系统化解决方案

通过系统化的路径管理和规范的打包流程,可解决95%以上的PyInstaller打包问题。方法进行资源访问,并养成查看。

燃灯工作室 800

3分钟掌握HTML转Word终极方案:告别格式丢失的烦恼

还在为HTML内容无法完美转换为Word文档而烦恼吗?html-to-docx这个JavaScript库能够轻松实现HTML到DOCX格式的无缝转换,支持Microsoft Word、Google Docs、LibreOffice Writer等主流办公软件,让格式转换变得简单高效。无论你是内容创作者、教育工作者还是开发者,这个工具都能帮你解决文档格式转换的痛点,让HTML内容在Word中保持原有

gitblog_00726的博客 978

终极指南:如何解决folium地图元素碰撞检测与布局优化问题

folium是一款强大的Python地图可视化库,它结合了Python数据处理能力与Leaflet.js的交互地图功能,让开发者能够轻松创建专业的交互式地图。然而,当地图上存在大量标记点或复杂元素时,常常会遇到元素重叠、布局混乱等问题,影响用户体验和数据可读性。本文将分享5个实用技巧,帮助你解决folium地图中的元素碰撞检测与布局优化问题,让你的地图既美观又实用。 ## 1. 重叠标记处理:O

gitblog_00098的博客 926

CSSOM.js核心功能揭秘:解析CSS规则与操作样式表的终极指南

CSSOM.js是一个用纯JavaScript实现的CSS解析器和CSS对象模型库,它为开发者提供了在JavaScript中解析、操作和管理CSS样式表的完整解决方案。无论你是前端开发新手还是经验丰富的工程师,掌握CSSOM.js都能让你在处理CSS时如虎添翼。 ## 🚀 什么是CSS对象模型? CSS对象模型(CSS Object Model)是浏览器中表示CSS样式表的API接口。与DO

gitblog_01063的博客 374

终极指南:如何用HTML、CSS和JavaScript构建响应式测验应用界面

你是否想要提升你的核心Web开发技能?想要学习如何使用纯前端技术构建实用的Web应用?本文将为你详细介绍如何**使用HTML、CSS和JavaScript构建一个功能完整的响应式测验应用**。这个项目不仅适合初学者学习基础Web开发,还能帮助你掌握现代前端开发的核心概念。 ## 🎯 项目概述与核心功能 这个**测验应用项目**是一个完整的Web应用程序,它展示了如何在不使用任何框架或库的情况

gitblog_00075的博客 368

React Snapshot常见问题解决:渲染延迟、CSS闪烁、脚本执行问题的终极指南

React Snapshot是一个零配置的静态预渲染工具,专门为React应用提供快速SEO优化和性能提升。本文将为您提供完整的React Snapshot问题解决方案,帮助您解决渲染延迟、CSS闪烁和脚本执行等常见问题。😊 ## 🚀 什么是React Snapshot? React Snapshot是一个智能的静态预渲染工具,它能够自动为您的React应用生成静态HTML快照。通过将动态

gitblog_00232的博客 953
上一篇: 关于手机端JQuery的异步传输时UI界面不更新的bug
下一篇: 动态加载select内容 不显示 error
kevin0xFFFFFFFF
博客等级 码龄17年 3粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值