博客列表 >JS基础-jQuery的引入/$()的四大功能/jQuery对象的处理

JS基础-jQuery的引入/$()的四大功能/jQuery对象的处理

岂几岂几
岂几岂几原创
2020年06月25日 22:34:041882浏览

jQuery的使用

1. jQuery的引入方式

1.1 CDN静态资源库引用

  1. <!-- CDN方式引用 -->
  2. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>

1.2 本地引用

  • 把jQuery下载到本地, 同样以引入外部js文件的方式引入.
  1. <script scr="jquery-3.5.1.min.js"></script>

2. jQury的工厂函数$()

  • $(selector)的返回值为一个jQuery对象.
  • 使用语法: $(selector).operator() , 即: $(选择器).操作函数() .
  • jQuery是自动循环, 所以jQuery很少循环.
  • 类似给 console.log 函数起别名 cl , $jquery 函数的一个别名.

  • 工厂函数$()的四大功能

      1. 选择器功能
      • 工厂函数$()的选择器功能, 能很好的体现jQuery的特点: 写得少, 做得多.
  1. - `$(选择器)` 的返回值是**jQuery对象**.
    1. 根据HTML元素创建jQuery对象
    • $(HTML元素对象) : 把HTML元素对象封装成jQuery对象, 然后就能调用jQuery对象提供的方便的方法进行操作.
    1. 根据带有HTML标签的文本创建jQuery对象.
    • $(htmlStr) : 把带有HTML标签的文本解析成html元素对象, 再将其封装成jQuery对象.
    1. $(回调函数) : 当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>jQuery工厂函数$()的四大功能</title>
  7. <!-- 引入本地jQuery文件 -->
  8. <script src="jquery-3.5.1.min.js"></script>
  9. </head>
  10. <body>
  11. <ul id="first">
  12. <li>item1</li>
  13. <li>item2</li>
  14. <li>item3</li>
  15. </ul>
  16. <ul id="second">
  17. <li>item1</li>
  18. <li>item2</li>
  19. <li>item3</li>
  20. </ul>
  21. </body>
  22. <script>
  23. // jQuery工厂函数的四大功能
  24. // 1. 选择器功能
  25. /* 把第一个列表的字体颜色变成橙色 */
  26. /* 使用JS原生操作 */
  27. document.querySelectorAll('#first > li').forEach(function(ele) {
  28. ele.style.color = 'orange';
  29. });
  30. /* 使用jQuery实现 */
  31. $('#first > li').css('color', 'orange');
  32. // 2. 创建jQuery对象
  33. /* 把第二个列表的第二个列表项的背景色设置为黄色 */
  34. /* 用js原生操作获取第二个列表的第二个li元素 */
  35. var li2 = document.querySelector('#second > li:nth-of-type(2)');
  36. /* 把li元素封装成jQuery对象, 再调用css()方法设置背景色 */
  37. $(li2).css('background-color', 'yellow');
  38. // 3. 把带有HTML标签的文本解析成html元素对象, 再将其封装成jQuery对象.
  39. /* 把htmlStr字符串解析成HTML元素对象, 并在浏览器中显示 */
  40. var htmlStr = '<span>hello jQuery!</span>';
  41. $(htmlStr).css('color', 'red').appendTo($('body'));
  42. // 4. $(回调函数): 当HTML文档结构加载完成后, 会自动加载这个回调函数.
  43. /* 弹出"页面加载完毕"的提示框 */
  44. $(function() {
  45. alert('页面加载完毕');
  46. });
  47. </script>
  48. </html>

3. jQuery对象

  • jQuery对象可以封装1个或多个js对象, 包括但不限于HTML元素对象.

  • 可以使用类似访问数组元素的方式访问jQuery对象封装的元素. 如: $('div')[0] .

  • 也可以调用jQuery对象的get()方法来获取其封装的元素: $('div').get(1) .

  • length 属性, 值是jQuery对象封装的元素个数.

  • jQuery对象提供了很多方便操作HTML元素的各种属性的方法.

  • jQuery对象没有 forEach() 方法, 但提供了 $.each() 静态方法遍历其中的元素.

    • $.each() 方法的使用方法:
  1. $.each(jQuery对象, function(当前元素索引, 当前元素) {
  2. // do something...
  3. });
  • $.each() 也可以当做非静态方法调用:
  1. jQuery对象.each(function(当前元素索引, 当前元素) {
  2. // do something...
  3. });
  • 调用jQuery对象的 toArray() 方法, 可以将其封装的所有元素转换成真正的js对象数组, 然后就能使用 forEach() 方法遍历其元素了.
  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>jQuery对象</title>
  7. <!-- CDN方式引用, 即内容分发方式 -->
  8. <!-- BootCDN或者又拍云的CDN的速度都可以 -->
  9. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  10. <!-- 本地引用 -->
  11. </head>
  12. <body>
  13. <ul id="first">
  14. <li>item1</li>
  15. <li>item2</li>
  16. <li>item3</li>
  17. </ul>
  18. <ul id="second">
  19. <li>item1</li>
  20. <li>item2</li>
  21. <li>item3</li>
  22. </ul>
  23. </body>
  24. <script>
  25. // console.log函数起别名
  26. var cl = console.log.bind(console);
  27. // 封装所有元素的jQuery对象
  28. var $all = $('*');
  29. cl($all);
  30. // length属性返回封装的元素个数
  31. cl($all.length);
  32. // 获取封装的元素
  33. /* 方法1: 类似数组的array[index]方式 */
  34. cl($all[0]);
  35. /* 方法2: 调用get(index)方法 */
  36. cl($all.get(1));
  37. // 调用toArray()方法转成js数组
  38. cl($all.toArray());
  39. // 遍历封装的元素
  40. /* 方法1: $.each()静态方法: */
  41. $.each($all, function(index, ele) {
  42. cl('第' + (index + 1) + '个元素是: ' + ele.nodeName);
  43. })
  44. /* 方法2: 动态调用$.each()方法: */
  45. $all.each(function(index, ele) {
  46. cl('第' + (index + 1) + '个元素是: ' + ele.nodeName);
  47. });
  48. /* 方法3: 用toArray()方法转成js数组, 然后用forEach遍历 */
  49. $all.toArray().forEach(function(ele, index) {
  50. cl('第' + (index + 1) + '个元素是: ' + ele.nodeName);
  51. });
  52. </script>
  53. </html>

3. jQuery查询结果的处理

    1. 使用 toArray() 方法转成js数组来处理查询结果中的对象.
    1. 使用 $.each() / $(selector).each() 来处理查询结果中的对象.
    1. 使用 $.map(jQuery查询结果, function(当前元素, 当前元素索引) {...}) 来遍历jQuery查询结果, 并使用传入的回调函数处理遍历的每个对象, 将回调函数处理后返回的对象组成数组.
    1. 为jQuery查询结果绑定事件处理脚本.
  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>jq查询结果的处理</title>
  7. <!-- CDN方式引用, 即内容分发方式 -->
  8. <!-- BootCDN或者又拍云的CDN的速度都可以 -->
  9. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  10. <!-- 本地引用 -->
  11. </head>
  12. <body>
  13. <ul id="first">
  14. <li>item1</li>
  15. <li>item2</li>
  16. <li>item3</li>
  17. <li>item4</li>
  18. <li>item5</li>
  19. </ul>
  20. <script>
  21. var cl = console.log.bind(console);
  22. // 1. 使用 `toArray()` 方法转成js数组来处理查询结果中的对象.
  23. /* 见上一节实例, 略 */
  24. // 2. 使用 `$.each()` / `$(selector).each()` 来处理查询结果中的对象.
  25. /* 见上一节实例, 略 */
  26. // 3. 使用$.map()遍历并处理jQuery查询结果
  27. var $lis = $('li');
  28. /* 返回偶数索引的元素 */
  29. var array = $.map(lis, function(ele, index) {
  30. if (index % 2 == 0) {
  31. return ele;
  32. }
  33. });
  34. /* 背景色改成橙色 */
  35. $(array).css('background-color', 'orange');
  36. // 4. 为jQuery查询结果绑定事件处理脚本.
  37. lis.click(function(event) {
  38. // index()使用方式1:
  39. // cl('点击了第' + (lis.index(event.target) + 1) + "个元素");
  40. // index()使用方式2:
  41. cl('点击了第' + (event.target.index() + 1) + "个元素");
  42. });
  43. </script>
  44. </body>
  45. </html>

学习心得

  • jQuery是JS的一个类库, 是为了简化JS操作出现的. jQuery能做的, JS都能做.

  • jQuery的特点: 写得少, 做得多.

  • jQuery的方法基本都是自动循环的, 所以jQuery很少循环.

  • 一个奇怪的情况, 如果以CDN的方式引入jQuery, cl($('*')) 显示的是 jQuery.fn.init[...] , 即, $(selector)的返回结果是jQuery对象; 而如果引入本地的jQuery文件, 上述表达式显示的结果是 S.fn.init[...] . 这两者有什么区别?

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议