用JavaScript实现用一个DIV来包装文本元素节点
2014-09-09 10:51
615 查看
当你的应用需要依赖某个特定的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实现用一个DIV来包装文本元素节点
- 用JavaScript来包装文本元素节点
- JavaScript找到一个元素的父节点
- JavaScript数组对象实现增加一个返回随机元素的方法
- 可编辑的div元素去除粘贴复制带来的额外样式,实现纯文本粘贴
- javascript 如何判断元素是否包含一个特定的类,hasClass函数的实现
- 通过纯CSS样式实现DIV元素中多行文本超长自动省略号
- javascript实现把一个节点插入到另一个节点之后
- JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
- 一个类似MSN的提示风格的右下脚上浮的DIV-----JavaScript实现
- javascript实现的一个自定义长度的文本自动换行的函数。
- 17. 用JavaScript实现如下效果:一个div的宽度从其初始宽度1px,每秒增长1px,直到变到100px,再从100px每秒减少1px,直到变回到1px,如此反复5次后,该变化停止,并将其最
- 基于javascript实现按圆形排列DIV元素(一)
- JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
- JavaScript实现将数组中所有元素连接成一个字符串的方法
- 你能相信吗?这是由一个DIV元素实现的动画,纯CSS3技术
- javascript :删除节点:用removeChild()方法从给定元素里删除一个子节点
- 每天一个JavaScript实例-从一个div元素删除一个段落
- javascript实现节点(div)名称编辑