博客列表 >JQ工厂函数及其对HTML元素的属性操作

JQ工厂函数及其对HTML元素的属性操作

longlong
longlong原创
2020年08月19日 12:53:58663浏览

1. 工厂函数$()的四种应用场景

  • $(选择器,上下文):主要用于获取页面元素

  • $(JS原生对象):将JS原生对象转换为JQ对象

  • $(callback):当html文档加载完成后立即执行这个回调函数

  • $(html文档):生成html文档,类似于创建节点

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>$()应用场景</title>
  7. </head>
  8. <body>
  9. <table border="1">
  10. <tr class="first">
  11. <td>td1</td>
  12. <td>td2</td>
  13. <td>td3</td>
  14. <td>td4</td>
  15. </tr>
  16. <tr class="second">
  17. <td>td1</td>
  18. <td>td2</td>
  19. <td>td3</td>
  20. <td>td4</td>
  21. </tr>
  22. </table>
  23. <script src="./jquery/jquery-3.5.1.min.js"></script>
  24. <script>
  25. // 1. $(选择器,上下文)
  26. // 1.1 将所有的单元格中文本颜色变红
  27. $('td').css('color', 'red');
  28. // 1.2 将第一行的单元格字体增大
  29. $('td', '.first').css('font-size', '1.5rem');
  30. // 2. $(html文档)
  31. $('<h2>我的表格</h2>').insertBefore('table');
  32. $('<p>我的文档</p>').appendTo('body');
  33. // 3. $(原生JS对象)
  34. let jsObj = document.querySelectorAll('.second td');
  35. $(jsObj).css({
  36. 'color': 'blue',
  37. 'font-size': '2rem',
  38. });
  39. // 4. $(callback)
  40. $(function () {
  41. $('<p>加载完成1</p>').appendTo('body');
  42. });
  43. // 简化了其本身的ready方法
  44. $('document').ready(function () {
  45. $('<p>加载完成2</p>').appendTo('body');
  46. });
  47. </script>
  48. </body>
  49. </html>

2. $与$()的区别

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>$与$()的区别</title>
  7. </head>
  8. <body>
  9. <button>点击获取各个名字的索引</button>
  10. <p>mike的名字索引是:<span></span></p>
  11. <p>alice的名字索引是:<span></span></p>
  12. <p>tom的名字索引是:<span></span></p>
  13. <p>peter的名字索引是:<span></span></p>
  14. <script src="./jquery/jquery-3.5.1.min.js"></script>
  15. <script>
  16. // $:它是一个函数,也是函数对象,既然是对象,它也有自己的方法,比如:$.each() 、 $.inArray() ...
  17. // $():它是通过$函数生成的jQuery对象,$()就相当于jQuery()
  18. // 示例:
  19. let arr = ['mike', 'alice', 'tom', 'peter'];
  20. $('button').click(function () {
  21. $('span').eq(0).text($.inArray('mike', arr));
  22. $('span').eq(1).text($.inArray('alice', arr));
  23. jQuery('span').eq(2).text($.inArray('tom', arr));
  24. jQuery('span').eq(3).text($.inArray('peter', arr));
  25. });
  26. // 上面示例中:$('button')和$('span')都是通过$函数生成的JQ对象,分别使用了其click()和eq()、text()方法
  27. // 而text()方法中的内容是 $函数对象的inArray()方法,用于寻找值在当前数组中的索引并返回
  28. </script>
  29. </body>
  30. </html>

3. attr()的常用操作

  • attr(属性名):查看属性名

  • attr(属性名,属性值):设置属性值

  • attr(属性名,callback):第二个参数支持回调

实例演示:使用attr()制作选项卡:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>attr()操作实例之选项卡</title>
  7. </head>
  8. <style>
  9. * {
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. .container {
  15. width: 200px;
  16. }
  17. .container .nav {
  18. display: flex;
  19. }
  20. .container .nav li {
  21. list-style: none;
  22. flex: auto;
  23. text-align: center;
  24. }
  25. .container .nav li:hover {
  26. cursor: pointer;
  27. }
  28. .nav .active {
  29. background-color: lightblue;
  30. }
  31. .container .items div {
  32. display: none;
  33. width: 200px;
  34. height: 150px;
  35. background-color: lightblue;
  36. }
  37. .container .items .active {
  38. display: block;
  39. }
  40. </style>
  41. <body>
  42. <div class="container">
  43. <ul class="nav">
  44. <li class="active" data-index="1">导航一</li>
  45. <li data-index="2">导航二</li>
  46. <li data-index="3">导航三</li>
  47. </ul>
  48. <div class="items">
  49. <div class="active" data-index="1">导航一内容</div>
  50. <div data-index="2">导航二内容</div>
  51. <div data-index="3">导航三内容</div>
  52. </div>
  53. </div>
  54. <script src="./jquery/jquery-3.5.1.min.js"></script>
  55. <script>
  56. let lis = $('li', '.nav');
  57. let items = $('div', '.items');
  58. console.log(items);
  59. // console.log(lis);
  60. // 1. attr() 查看属性
  61. console.log(lis.eq(0).attr('class'));
  62. lis.click(function (ev) {
  63. lis.each(function (index, item) {
  64. // 2. attr() 设置属性
  65. lis.eq(index).attr('class', null);
  66. // console.log(index);
  67. });
  68. // console.log($(ev.target).attr('class', 'active'));
  69. $(ev.target).attr('class', 'active')
  70. items.each(function (index, item) {
  71. items.eq(index).attr('class', null);
  72. });
  73. // console.log(ev.target.dataset.index);
  74. items.each(function (index, item) {
  75. // if (ev.target.dataset.index === item.dataset.index) {
  76. // console.log(item);
  77. // $(item).attr('class', 'active');
  78. // 3. attr() 第二个参数回调
  79. $(item).attr('class', function () {
  80. if (ev.target.dataset.index === item.dataset.index) {
  81. $(item).attr('class', 'active');
  82. }
  83. })
  84. // }
  85. });
  86. });
  87. </script>
  88. </body>
  89. </html>

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
果冻2020-08-19 13:55:301楼
不会啊,简单的查了下手册,ES6怎么用不知道呢