用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 节点排序 2
Jan 31 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
Feb 20 Javascript
js淡入淡出的图片轮播效果代码分享
Aug 24 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
Sep 12 Javascript
Bootstrap树形组件jqTree的简单封装
Jan 25 Javascript
JavaScript获取IP获取的是IPV6 如何校验
Jun 12 Javascript
使用DeviceOne实现微信小程序功能
Dec 29 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
May 11 Javascript
微信小程序返回多级页面的实现方法
Oct 27 Javascript
vue实现表单录入小案例
Sep 27 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
Sep 29 Javascript
jquery实现淡入淡出轮播图效果
Dec 13 jQuery
点击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
smarty section简介与用法分析
2008/10/03 PHP
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
Vue性能优化的方法
2020/07/30 Javascript
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
python生成lmdb格式的文件实例
2018/11/08 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
python实现KNN近邻算法
2020/12/30 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
实例讲解利用HTML5 Canvas API操作图形旋转的方法
2016/03/22 HTML / CSS
服务明星事迹材料
2014/12/29 职场文书
义诊活动通知
2015/04/24 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
MySQL分区表管理命令汇总
2022/03/21 MySQL
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python