用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 相关文章推荐
Prototype 学习 工具函数学习($w,$F方法)
Jul 12 Javascript
js倒计时小程序
Nov 05 Javascript
Google Dart编程语法和基本类型学习教程
Nov 27 Javascript
jQuery 取值、赋值的基本方法整理
Mar 31 Javascript
JavaScript中的闭包(Closure)详细介绍
Dec 30 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
Jul 07 Javascript
在bootstrap中实现轮播图实例代码
Jun 11 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
ES7之Async/await的使用详解
Mar 28 Javascript
一些可能会用到的Node.js面试题
Jun 15 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
May 21 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
Oct 02 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
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
js树形控件脚本代码
2008/07/24 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
javascript版2048小游戏
2015/03/18 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
Javascript实现字数统计
2015/07/03 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
Python的Django框架安装全攻略
2015/07/15 Python
python列表的增删改查实例代码
2018/01/30 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
波兰在线体育用品商店:Hop-Sport.pl
2019/07/23 全球购物
企业管理专业个人求职信范文
2013/09/24 职场文书
企划经理的岗位职责
2013/11/17 职场文书
农场厂长岗位职责
2013/12/28 职场文书
大众服装店创业计划书范文
2014/01/01 职场文书
监理资料员岗位职责
2014/01/03 职场文书
告诉你怎样写创业计划书
2014/01/27 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL