用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字符编码函数区别分析
Jun 05 Javascript
不同Jquery版本引发的问题解决
Oct 14 Javascript
javascript按位非运算符的使用方法
Nov 14 Javascript
javascript实现依次输入input自动定焦
Dec 23 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
Jan 13 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
Mar 04 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 Javascript
Bootstrap框架实现广告轮播效果
Nov 28 Javascript
jQuery实现页面顶部下拉广告
Dec 30 Javascript
拖动时防止选中
Feb 03 Javascript
js判断是否是手机页面
Mar 17 Javascript
js判断鼠标移入移出方向的方法
Jun 24 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/01/07 PHP
PHP 飞信好友免费短信API接口开源版
2010/07/22 PHP
PHP实现验证码校验功能
2017/11/16 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
python执行使用shell命令方法分享
2017/11/08 Python
Python random模块用法解析及简单示例
2017/12/18 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
python3.5安装python3-tk详解
2019/04/26 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
Ruby如何创建一个线程
2013/03/10 面试题
小学校园之星事迹材料
2014/05/16 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
商场营业员岗位职责
2015/04/14 职场文书
在职证明书模板
2015/06/15 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python