用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 相关文章推荐
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
Apr 20 Javascript
js中查找最近的共有祖先元素的实现代码
Dec 30 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
Feb 13 Javascript
对JavaScript中this指针的新理解分享
Jan 31 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
Aug 06 Javascript
JavaScript中Function函数与Object对象的关系
Dec 17 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
Jun 21 Javascript
详解微信小程序开发之城市选择器 城市切换
Jan 17 Javascript
ES6中module模块化开发实例浅析
Apr 06 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
微信小程序实现时间预约功能
Nov 27 Javascript
JavaScript实现随机点名程序
Mar 25 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
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
js验证是否为数字的总结
2013/04/14 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
简单谈谈Python中的闭包
2016/11/30 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
python实现两个文件合并功能
2018/04/01 Python
python实现定时提取实时日志程序
2018/06/22 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
Python笔记之工厂模式
2019/11/20 Python
Python实现不规则图形填充的思路
2020/02/02 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
企业挂职心得体会
2014/09/10 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
重阳节标语大全
2014/10/07 职场文书
小学教师工作总结2015
2015/04/07 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript