用JavaScript实现用一个DIV来包装文本元素节点


Posted in Javascript onSeptember 09, 2014

当你的应用需要依赖某个特定的JavaScript类库时,你无意中总会试图解决某些类库自身的问题,而不是语言的问题。就比如当我试图将文本(可能也包含HTML元素)用一个DIV元素包起来时。假设有以下HTML:

This is some text and <a href="">a link</a>

这时候如果想把它转换为下面这样:

<div>This is some text and <a href="">a link</a><div>

最简单暴力的方法是,你可以在父元素上通过 .innerHTML 属性来执行更新,但问题是这样一来所有绑定的事件监听都会失效,因为使用 innerHTML 时会重新创建一个HTML元素。这真是个大玻璃杯!所以这时候只能利用JavaScript来实现 —— 尺有所短、寸有所长。下面是实现代码:

var newWrapper = document.createElement('div'); 
while(existingParent.firstChild) { 
// 移动DOM元素,不会创建新元素 
newWrapper.appendChild(existingParent.firstChild); 
}

这里不能使用for循环,因为 childNodes 是一个动态节点组成的集合,只要移动节点就会影响到他的index索引值。我们用while循环一直检测父元素的 firstChild ,如果其返回一个代表 false 的值, 那么你就知道所有的节点都已经移到新的parent中了!

Javascript 相关文章推荐
javascript 支持ie和firefox杰奇翻页函数
Jul 22 Javascript
原生javascript兼容性测试实例
Jul 01 Javascript
JavaScript操作Oracle数据库示例
Mar 06 Javascript
原生js和jquery实现图片轮播淡入淡出效果
Apr 23 Javascript
JSON字符串和对象之间的转换详解
May 26 Javascript
js实现全国省份城市级联下拉菜单效果代码
Sep 07 Javascript
完美的js图片轮换效果
Feb 05 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
Vue实现移动端页面切换效果【推荐】
Nov 13 Javascript
js实现掷骰子小游戏
Oct 24 Javascript
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
关于React Native 无法链接模拟器的问题
Jun 21 Javascript
点击button获取text内容并改变样式的js实现
Sep 09 #Javascript
js 数组去重的四种实用方法
Sep 09 #Javascript
jQuery源码分析之jQuery中的循环技巧详解
Sep 06 #Javascript
10分钟学会写Jquery插件实例教程
Sep 06 #Javascript
页面加载完后自动执行一个方法的js代码
Sep 06 #Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
Sep 06 #Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
Sep 06 #Javascript
You might like
PHP 进程锁定问题分析研究
2009/11/24 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
Python实现全角半角转换的方法
2014/08/18 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
python实现的自动发送消息功能详解
2019/08/15 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
国际象棋商店:The Chess Store
2018/07/09 全球购物
企业安全生产标语
2014/06/06 职场文书
淘宝店策划方案
2014/06/07 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
高考诚信考试承诺书
2015/04/29 职场文书