用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 页面只自动刷新一次
Jul 10 Javascript
jquery 新浪网易的评论块制作
Jul 01 Javascript
js数组Array sort方法使用深入分析
Feb 21 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
May 06 Javascript
引用其它js时如何同时处理多个window.onload事件
Sep 02 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
Jan 08 jQuery
vue构建动态表单的方法示例
Sep 22 Javascript
javascript中数组的常用算法深入分析
Mar 12 Javascript
详解微信小程序之一键复制到剪切板
Apr 24 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
Aug 07 Javascript
JS数组splice操作实例分析
Oct 12 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
Nov 03 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获取数组长度的方法(有实例)
2013/10/27 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
PHP的反射机制实例详解
2017/03/29 PHP
php简单中奖算法(实例)
2017/08/15 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
PHP安全之register_globals的on和off的区别
2020/07/23 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
javascript实现按回车键切换焦点
2015/02/09 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
Python基类函数的重载与调用实例分析
2015/01/12 Python
MySQL最常见的操作语句小结
2015/05/07 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
python中reload重载实例用法
2020/12/15 Python
python 用递归实现通用爬虫解析器
2021/04/16 Python
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS