用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 相关文章推荐
JS事件Event元素(兼容IE,Firefox,Chorme)
Nov 01 Javascript
js 自制滚动条的小例子
Mar 16 Javascript
浅谈JavaScript中null和undefined
Jul 09 Javascript
JS模拟实现Select效果代码
Sep 24 Javascript
JavaScript类型系统之Object详解
Jan 07 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
Apr 18 Javascript
浅谈js多维数组和hash数组定义和使用
Jul 27 Javascript
Vue.js使用v-show和v-if的注意事项
Dec 13 Javascript
ES6入门教程之Class和Module详解
May 17 Javascript
axios post提交formdata的实例
Mar 16 Javascript
如何安装控制器JavaScript生成插件详解
Oct 21 Javascript
JavaScript中的null和undefined用法解析
Sep 30 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
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
php异常处理方法实例汇总
2015/06/24 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
js 日期转换成中文格式的函数
2009/07/07 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
python生成指定尺寸缩略图的示例
2014/05/07 Python
python操作redis的方法
2015/07/07 Python
python数据结构之图的实现方法
2015/07/08 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
django云端留言板实例详解
2019/07/22 Python
Python的形参和实参使用方式
2019/12/24 Python
python自动点赞功能的实现思路
2020/02/26 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
留学自荐信
2013/10/10 职场文书
倡议书范文格式
2014/05/12 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
环保建议书作文500字
2015/09/14 职场文书