jQuery 提供了一系列方法用于包裹节点,那包裹节点是什么意思呢?其实就是使用字符串代码将指定元素的代码包含着的意思。
<script type="text/javascript" src="jquery-1.12.3.min.js"></script> <script> $(function(){ //$('div').wrap('<strong></strong>'); //在div 外层包裹一层strong //$('div').wrap('<strong>123</strong>'); //包裹的元素可以带内容 //$('div').wrap('<strong><em></em></strong>'); //包裹多个元素 //$('div').wrap($('strong').get(1)); //也可以包裹一个原生DOM,先获取到strong元素,后再包裹div元素 //$('div').wrap(document.createElement('strong')); //临时的原生DOM $('div').wrap(function (index) { //匿名函数 return '<strong>'+index+'</strong>'; }); }); </script> </head> <body> <strong>DOM</strong> <strong>DFM</strong> <div>节点</div> <div>节点</div> </body>
<script type="text/javascript" src="jquery-1.12.3.min.js"></script> <script> $(function(){ $('div').unwrap(); //移除一层包裹内容,多个需移除多次 }); </script> </head> <body> <strong><div>节点</div></strong> <strong><em><div>节点</div></em></strong> </body>
<script type="text/javascript" src="jquery-1.12.3.min.js"></script> <script> $(function(){ //$('div').wrapAll('<strong></strong>'); //所有div 外面只包一层strong //$('div').wrapAll($('strong').get(0)); //同上 }); </script> </head> <body> <div>节点</div> <div>节点</div> </body>
.wrap()和.wrapAll()的区别在前者把每个元素当成一个独立体,分别包含一层外层;后者将所有元素作为一个整体作为一个独立体,只包含一层外层。
这两种都是在外层包含,而.wrapInner()在内层包含。
<script type="text/javascript" src="jquery-1.12.3.min.js"></script> <script> $(function(){ $('div').wrapInner('<strong></strong>'); //包裹子元素内容,这里包裹了div里面的节点变成<div><strong>节点</strong></div> //$('div').wrapInner($('strong').get(0)); //DOM 节点 //$('div').wrapInner(function () { //匿名函数 //return '<strong></strong>'; //}); }); </script> </head> <body> <div>节点</div> <div>节点</div> </body>