5-3 DOM包裹wrap()方法
本节编程练习不计算学习进度,请电脑登录imooc.com操作

DOM包裹wrap()方法

如果要将元素用其他元素包裹起来,也就是给它增加一个父元素,针对这样的处理,JQuery提供了一个wrap方法

.wrap( wrappingElement )在集合中匹配的每个元素周围包裹一个HTML结构

简单的看一段代码:

<p>p元素</p>

给p元素增加一个div包裹

$('p').wrap('<div></div>')

最后的结构,p元素增加了一个父div的结构

<div>
    <p>p元素</p>
</div>

.wrap( function ) 一个回调函数,返回用于包裹匹配元素的 HTML 内容或 jQuery 对象

使用后的效果与直接传递参数是一样,只不过可以把代码写在函数体内部,写法不同而已

以第一个案例为例:

$('p').wrap(function() {
    return '<div></div>';   //与第一种类似,只是写法不一样
})

注意:

.wrap()函数可以接受任何字符串或对象,可以传递给$()工厂函数来指定一个DOM结构。这种结构可以嵌套了好几层深,但应该只包含一个核心的元素。每个匹配的元素都会被这种结构包裹。该方法返回原始的元素集,以便之后使用链式方法。

任务

  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  6. <title></title>
  7. <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script>
  8. <style>
  9. .left div,
  10. .right div {
  11. width: 100px;
  12. padding: 5px;
  13. margin: 5px;
  14. float: left;
  15. border: 1px solid #ccc;
  16. background: #bbffaa;
  17. }
  18.  
  19. .right div {
  20. background: yellow;
  21. }
  22.  
  23. p {
  24. border: 1px solid red;
  25. }
  26.  
  27. a {
  28. border: 1px solid blue;
  29. }
  30. </style>
  31. </head>
  32.  
  33. <body>
  34. <h2>DOM包裹wrap()方法</h2>
  35. <div class="left">
  36. <button class="aaron1">点击,通过wrap方法给p元素增加父容器div</button>
  37. <button class="aaron2">点击,通过wrap的回调方法给a元素增加父容器div</div>
  38. </div>
  39. <div class="right">
  40. <p>p元素</p>
  41. <p>p元素</p>
  42. </div>
  43. <div class="left">
  44. <a>a元素</a>
  45. <a>a元素</a>
  46. </div>
  47. <script type="text/javascript">
  48. $(".aaron1").on('click', function() {
  49. //给所有p元素,增加父容器div
  50. $('p').wrap('<div></div>')
  51. })
  52. </script>
  53. <script type="text/javascript">
  54. $(".aaron2").on('click', function() {
  55. $('a').wrap(function() {
  56. return '<div class="' + $(this).text() + '" />';
  57. })
  58. })
  59. </script>
  60. </body>
  61.  
  62. </html>
  63.  
下一节