Blogger Information
Blog 47
fans 1
comment 0
visits 53022
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
JS - jQuery 基础
晴天
Original
833 people have browsed it

jQuery 基础

1. jQuery 是什么

  • jQuery 是一个非常流行的 JavaScript 函数库
  • jQuery 经常用于 DOM 查询, 常用动画, Ajax 等常用操作
  • jQuery 宗旨: 写得更少,而做得更多

2. 引入 jQuery

  • 官网下载: jQuery 下载
  • CDN:Bootstrap 中文网,又拍云
  • Composer: composer require components/jquery

  • CDN 与官网下载到本地的对比

    • 官网下载总是可以获取最新版本,如果网站需要离线浏览只能选择它, 但资源下载会延缓网站打开速度
    • CDN 可以让用户选择最近的节点下载,并且用户浏览器可能在访问其它站点时已经缓存了这个库,速度很快
  • composer 下载的 jQuery,就像一个普通文件一样,直接用<script src=""></script>引入

3. $()函数

  • jQuery 库是基于一个全局函数:jQuery()实现的,可简写为$()
  • 调用$()会返回一个 jQuery 对象,但它不是构造函数(不用new调用),而是工厂函数
  • 对象成员由属性和方法组成,但 jQuery 更偏爱方法,所有的 jQuery 方法都需要使用工厂函数\$()调用
  • 通过$()函数创建的对象,可以调用定义在 jQuery 对象上的所有方法和属性
  • $()函数如此强大, 以至于不得不重点讨论一下,但在学习之前,应该将 jQuery 函数库引入到我们的项目中

3.1 \$()工厂函数的四种使用场景

  • 基本语法:\$(选择器).操作()
  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. <script src="lib/jquery-3.5.1.js"></script>
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <ul id="first">
  11. <li>item1</li>
  12. <li>item2</li>
  13. <li>item3</li>
  14. </ul>
  15. <ul id="second">
  16. <li>item1</li>
  17. <li>item2</li>
  18. <li>item3</li>
  19. </ul>
  20. </body>
  21. <script>
  22. // 1. $(选择器, 上下文): 返回jQuery对象
  23. // 改变li的文本颜色
  24. // 原生
  25. document.querySelectorAll("li").forEach(function (item) {
  26. item.style.color = "red";
  27. });
  28. // jQuery
  29. $("li").css("color", "blue");
  30. // 若只改变第一组的颜色
  31. $("li", "#first").css("color", "black");
  32. // 也可以这样写
  33. $("#first > li").css("color", "red");
  34. // 2. $(js对象), 返回一个jQuery对象, 将js对象包装成JQ对象
  35. // 给第二组加个背景颜色
  36. var lis = document.querySelectorAll("#second > li");
  37. // 原生
  38. lis.forEach(function (item) {
  39. item.style.backgroundColor = "yellow";
  40. });
  41. // 将lis包装成jq对象
  42. $(lis).css("background-color", "lightblue");
  43. // 3. $(html文本), 将html文本包装成一个jQuery对象并返回
  44. // 将标签插入到第一组中
  45. $("<h1>PHP中文网</h1>").insertBefore("#first");
  46. // 4. $(callback): 当html文档结构加载完成后就会立即执行这个回调
  47. $(function () {
  48. $("#first").css("background-color", "lightcyan");
  49. $("#second").css({
  50. "background-color": "#8888",
  51. color: "blue",
  52. "font-size": "50px",
  53. });
  54. });
  55. </script>
  56. </html>

4. 重要术语

  • jQuery 函数 + jQuery()$() + 用来创建 jQuery 对象 + 注册 DOM 就绪时需要执行的回调 + 充当 jQuery 命名空间 + 通常也称为jQuery全局对象,注意与 jQuery 对象的区别
  • jQuery 对象 + jQurey()函数的返回值 + 返回值是一组文档元素,也称之为”jQuery 集合”,”jQuery 包装集合”等
  • 选中元素 - 根据 css 选择器匹配到的所有文档元素集合 - 所以, 选中元素, 也可以称之为”匹配元素”
  • jQuery 方法: 只能由 jQuery 对象调用的方法, 如$('div').attr('style')
  • jQuery 静态方法: 定义在 jQuery 命名空间上的方法,即 jQuery 函数上的方法,如$.each()
  • 通过上下文,可以很方便的区分出 jquery 方法与静态方法,但有些方法的名称却是完全相同的,例如
  1. <script>
  2. var cl = console.log.bind(console);
  3. // 1. jQuery函数
  4. // $() === jQuery()
  5. // 改变body背景颜色
  6. // 原生
  7. document.querySelector("body").style.backgroundColor = "red";
  8. // jq对象
  9. $("body").css("backgroundColor", "yellow");
  10. jQuery("body").css("backgroundColor", "lightcyan");
  11. // 2.jQuery对象
  12. // 获取页面所有元素返回一个对象.对象无法进行foreach遍历
  13. cl($("*"));
  14. // 获取所有元素并将对象转为数组,进行遍历
  15. cl(
  16. $("*")
  17. .toArray()
  18. .forEach(function (item) {
  19. cl(item);
  20. })
  21. );
  22. // 3.jQuery静态方法与方法
  23. // each() : 静态方法
  24. $.each($("*"), function (index, item) {
  25. cl(item); //序号 内容
  26. });
  27. // each()非静态方法
  28. $("*").each(function (index, item) {
  29. cl(index);
  30. });
  31. </script>

5. jQuery 对查询结果的处理方式

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. <script src="lib/jquery-3.5.1.js"></script>
  7. <title>查询结果的处理</title>
  8. </head>
  9. <body>
  10. <ul>
  11. <li>item1</li>
  12. <li>item2</li>
  13. <li>item3</li>
  14. <li>item4</li>
  15. <li>item5</li>
  16. </ul>
  17. </body>
  18. </html>
  • toArray 将查询结果转为真正的数组
  1. <script>
  2. var cl = console.log.bind(console);
  3. var lis = $("ul > li"); // 返回一个jq对象
  4. cl(lis);
  5. // 原生
  6. for (var i = 0; i < lis.length; i++) {
  7. // 改变字体颜色
  8. lis.get(i).style.color = "red";
  9. }
  10. // jQuery
  11. lis.toArray().forEach(function (item, index) {
  12. // 改变字体颜色
  13. $(item).css("color", "blue");
  14. if (index >= 2) {
  15. // 控制台打印
  16. cl("元素" + index + " : " + item);
  17. // 元素2 : [object HTMLLIElement]
  18. // 元素3 : [object HTMLLIElement]
  19. // 元素4 : [object HTMLLIElement]
  20. }
  21. });
  22. </script>
  • $.each() 回调的参数顺序与 forEach 不一样, \$().each(callback)
  1. <script>
  2. var cl = console.log.bind(console);
  3. var lis = $("ul > li"); // 返回一个jq对象
  4. cl(lis);
  5. lis.each(function (index, item) {
  6. // 原生
  7. this.style.color = "red";
  8. // jq
  9. $(this).css("color", "blue");
  10. });
  11. </script>
  • $.map(), 必须要有返回值, 回调参数的参数与 foreach 的回调参数的参数相同
  1. <script>
  2. var cl = console.log.bind(console);
  3. var lis = $("ul > li"); // 返回一个jq对象
  4. cl(lis);
  5. var arr = $.map(lis, function (item, index) {
  6. // 返回偶数
  7. if (index % 2) {
  8. return item;
  9. }
  10. });
  11. $(arr).css("color", "yellow");
  12. </script>
  • index(): 返回 jQuery 查询集合中的索引
  1. <script>
  2. var cl = console.log.bind(console);
  3. var lis = $("ul > li"); // 返回一个jq对象
  4. cl(lis);
  5. lis.click(function () {
  6. // 打印下点击了谁
  7. cl("点击了", $(this).index() + 1);
  8. });
  9. </script>

6. 基础的 getter 与 setter

  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. <script src="lib/jquery-3.5.1.js"></script>
  7. <title>Document</title>
  8. <style>
  9. body {
  10. display: flex;
  11. flex-direction: column;
  12. align-items: center;
  13. color: #666;
  14. }
  15. form {
  16. width: 400px;
  17. /* height: 150px; */
  18. padding: 20px 10px;
  19. border: 1px solid #aaa;
  20. box-shadow: 0 0 5px #888;
  21. box-sizing: border-box;
  22. background-color: #eee;
  23. display: grid;
  24. grid-template-columns: 80px 200px;
  25. gap: 10px;
  26. place-content: center center;
  27. }
  28. button {
  29. grid-column: 2 / 3;
  30. height: 26px;
  31. }
  32. button:hover {
  33. color: white;
  34. background-color: #888;
  35. border: none;
  36. cursor: pointer;
  37. }
  38. .red {
  39. color: red;
  40. }
  41. </style>
  42. </head>
  43. <body>
  44. <h2 class="red">用户登录</h2>
  45. <form action="handle.php" method="get">
  46. <label for="email">Email:</label>
  47. <input
  48. type="email"
  49. name="email"
  50. id="email"
  51. autofocus
  52. value="leture@php.cn"
  53. />
  54. <label for="password">Password:</label>
  55. <input type="password" name="password" id="password" value="不少于6位" />
  56. <label for="confirm">记住我:</label>
  57. <div>
  58. <input type="radio" name="save" id="confirm" value="1" checked /><label
  59. for="confirm"
  60. >保存</label
  61. >
  62. <input type="radio" name="save" id="cancel" value="0" /><label
  63. for="cancel"
  64. >放弃</label
  65. >
  66. </div>
  67. <button>登录</button>
  68. </form>
  69. </body>
  70. <script>
  71. var cl = console.log.bind(console);
  72. // 拿到form;
  73. var form = $("form");
  74. // attr(name) : 获取 getter
  75. // attr(name,value) :修改 setter
  76. // 拿到action的值
  77. cl(form.attr("action")); //handle.php
  78. // 修改action的值
  79. form.attr("action", "1.php");
  80. cl(form.attr("action")); // 1.php
  81. // 修改多个值 使用对象字面量
  82. form.attr({
  83. action: "3.php",
  84. method: "post",
  85. }); //<form action="3.php" method="post">
  86. // 动态修改action
  87. form.attr("action", function () {
  88. // 根据method值修改请求地址
  89. // 先把method值转为小写
  90. var method = $(this).attr("method").toLowerCase();
  91. return method === "get" ? "login.php" : "register.php";
  92. });
  93. </script>
  94. </html>

7. jQuery 属性与 DOM 常用操作

7.1 属性操作

7.1.1 获取和设置 HTML 属性

  • attr(): 获取与设置 html 元素的属性
  • removeAttr(): 移除 html 元素属性

7.1.2 获取和设置 CSS 属性

  • css(): 获取的是元素的计算样式,设置的是内联样式,但不适用于复合样式,如margin
  • addClass(): 添加类样式
  • removeClass(): 移除类样式
  • toggleClass(): 自动切换类样式
  • hasClass(): 判断是否存在某个类样式

7.1.3 获取和设置表单的值

  • val(): 获取和设置表单的值

7.1.4 获取和设置元素的内容

  • text(): 获取和设置元素的文本内容
  • html(): 获取和设置元素的 html 内容

7.1.5 获取和设置元素的位置与宽高

  • offset(): 获取元素的位置信息
  • scrollTop(),scrollLeft():获取元素滚动条位置

7.1.6 获取和设置元素中的数据

  • data(): 获取和设置元素中的数据
  • removeData(): 从元素中删除数据

7.2. DOM 操作

7.2.1 插入与替换元素

  • append() | appendTo(): 尾部插入元素
  • prepend() | prependTo(): 头部插入元素
  • after() | insertAfter(): 后面插入元素
  • befor() | insertBefor(): 前面插入元素
  • replaceWidh() | replaceAll(): 替换目标元素内容

7.2.2 复制元素

  • clone(): 创建并返回每一个选中元素的副本

7.3 删除元素

  • empty():
  • remove():

8. 总结

jQuery 简化了就是 js 代码,短短几行完成了原生几十行的功能,像是 php 的静态类 根据不同的参数完成不同的功能

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:本质上,jQuery就是一个js的全局函数对象而已, 不过在它上面定义了大量的实用的方法或属性,供用户操作, 来简化js编程
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post