jQuery 入门教程

参考文档地址:

官网文档

菜鸟教程

准备工作

1.jQuery介绍

  • 是一个用js封装的库, 专用用来方便我们操作dom节点的
  • $(‘#app’).html(); // 获取id为app的元素的节点的内容(包含标签)

2. 导入jQuery.js, 使用本地 js 或 cdn 地址都可以

  1. https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js
  2. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

3. 创建jQuery对象

  1. <body>
  2. <div id="app">asdfasdf</div>
  3. <script>
  4. var aa = $(选择器); // 方法1
  5. // 创建jQuery对象
  6. // 方法1 $(选择器)
  7. // var obj = {};
  8. // var date = new Date();
  9. var $app = $('#app');
  10. console.log('$app', $app);
  11. var bb = $(dom节点) // 方法2
  12. // 方式2 $(原生dom节点)
  13. var app = document.querySelector('#app');
  14. console.log('app', app);
  15. var $app = $(app);
  16. </script>
  17. </body>

(一) 绑定事件

1. $(选择器).on(事件类型,绑定函数);

  1. <style>
  2. .box {
  3. background-color: gray;
  4. padding: 50px;
  5. }
  6. </style>
  7. <body>
  8. <div class="box">
  9. <button>按钮</button>
  10. </div>
  11. <ul>
  12. <li>xxx1</li>
  13. <li>xxx2</li>
  14. <li>xxx3</li>
  15. </ul>
  16. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  17. <script>
  18. // 给button绑定事件, 第一个参数是事件类型, 第二参数是绑定的函数(回调函数)
  19. $('button').on('click', function() {
  20. alert(2222);
  21. });
  22. $('li').on('click', function() {
  23. console.log(this);
  24. })
  25. </script>
  26. </body>

2. 事件托管

  1. $(祖先选择器).on(事件类型, 选择器, 绑定函数);
  2. $(祖先选择器).delegate(选择器, 事件类型, 绑定函数);
  1. <style>
  2. ul {
  3. border: 1px solid;
  4. }
  5. li {
  6. background-color: gray;
  7. margin-top: 15px;
  8. }
  9. </style>
  10. <body>
  11. <ul>
  12. <li>1.xxxx</li>
  13. <li>2.xxxx</li>
  14. <li>3.xxxx</li>
  15. <li>4.xxxx</li>
  16. <li>5.xxxx</li>
  17. </ul>
  18. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  19. <script>
  20. // 把li的事件托管到ul上, $(祖先选择器).on(事件类型, 选择器, 绑定函数);
  21. $('ul').on('click', 'li', function() {
  22. // console.log(event.target);
  23. console.log(this);
  24. });
  25. </script>
  26. </body>

3. $(document).ready(fn); 相当于window.onload

  1. <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
  2. </script>
  3. <script>
  4. $(document).ready(function() {
  5. alert('页面加载完成');
  6. // 需要页面加载完成 $('#app')才存在
  7. $('#app').on('click', function() {
  8. alert(2222);
  9. })
  10. })
  11. </script>
  12. <body>
  13. <div id="app">
  14. asdfasdfasdf
  15. </div>
  16. </body>

(二) ajax 请求

1. get 请求: https://jquery.cuishifeng.cn/jQuery.get.html

2. post 请求

3. ajax 请求

  1. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  2. <script>
  3. $.ajax({
  4. type: 'get',
  5. url: 'http://huruqing.cn:3000/api/film/getList2',
  6. data: {},
  7. dataType: 'json',
  8. success: function(res) {
  9. console.log(res);
  10. },
  11. // 网络问题,地址不对等原因导致前端跟后台都没有建立成功的通信
  12. error: function() {
  13. alert('请求错误');
  14. }
  15. })
  16. </script>

(三) 选择器

1. $(选择器名称)

  1. <body>
  2. <div id="app">app</div>
  3. <div class="aaa">aaa</div>
  4. <button>哈哈</button>
  5. <button>哈哈</button>
  6. <button>哈哈</button>
  7. <button>哈哈</button>
  8. <button>哈哈</button>
  9. <ul id="list1">
  10. <li>1</li>
  11. <li>2</li>
  12. <li>3</li>
  13. </ul>
  14. <ul id="list2">
  15. <li>1</li>
  16. <li>2</li>
  17. <li>3</li>
  18. </ul>
  19. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  20. <script>
  21. // 选择#app元素并打印
  22. $('#app');
  23. // 选择.aaa元素并打印
  24. $('.aaa');
  25. $('button');
  26. // 选择ul后面的li元素并打印
  27. $('#list1 li').on('click', function() {
  28. console.log(this);
  29. });
  30. </script>
  31. </body>

2. find 和 children 都用来查找后代元素

  1. <body>
  2. <div class="box">
  3. <div>adsfasdf</div>
  4. <p>sfasdf</p>
  5. <span>asdfa</span>
  6. <div>
  7. <span class="aa">asdfa</span>
  8. </div>
  9. </div>
  10. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  11. <script>
  12. var $box = $('.box');
  13. // 查找$box的后代元素, 类名为aaa
  14. var $aa = $box.find('.aa');
  15. console.log('$aa', $aa);
  16. // 查找$box所有子代元素
  17. var $children = $box.children();
  18. console.log('$children', $children);
  19. </script>
  20. </body>

3. parents,closest 查找祖先元素

  1. <body>
  2. <div class="box">
  3. <div class="aaa">
  4. <div>
  5. <p class="aaa">
  6. <span>后代元素</span>
  7. </p>
  8. </div>
  9. </div>
  10. </div>
  11. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  12. <script>
  13. var $span = $('span');
  14. // 查找span元素的所有的祖宗元素
  15. var $parents = $span.parents();
  16. console.log('$parents', $parents);
  17. // 查找span元素祖宗元素里离它最近的类名为aaa的元素
  18. var $aaa = $span.closest('.aaa');
  19. console.log('$aaa', $aaa);
  20. </script>
  21. </body>

4. siblings 查找兄弟元素

  1. <head>
  2. <style>
  3. .active {
  4. color: red;
  5. }
  6. li {
  7. cursor: pointer;
  8. }
  9. </style>
  10. </head>
  11. <body>
  12. <ul>
  13. <li>第1个li元素</li>
  14. <li>第2个li元素</li>
  15. <li class="active">第3个li元素</li>
  16. <li>第4个li元素</li>
  17. </ul>
  18. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  19. <script>
  20. var $active = $('.active');
  21. // 查找.acitve的兄弟元素
  22. var $brothers = $active.siblings();
  23. console.log('$brothers', $brothers);
  24. </script>
  25. </body>

(四) 操作 html

1. $(选择器).html() 相当于innerHTML

  1. <head>
  2. <style>
  3. .active {
  4. color: red;
  5. }
  6. li {
  7. cursor: pointer;
  8. }
  9. </style>
  10. </head>
  11. <body>
  12. <div id="app">
  13. <div>dfasdfadsf</div>
  14. <div>dfasdfadsf</div>
  15. <div>dfasdfadsf</div>
  16. </div>
  17. <ul>
  18. </ul>
  19. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  20. <script>
  21. // 获取app里面的html字符串
  22. var str = $('#app').html();
  23. console.log('str1', str);
  24. var str2 = $('#app').text();
  25. console.log('str2', str2);
  26. var str3 = `<li>第1li元素</li>
  27. <li>第2li元素</li>
  28. <li>第3li元素</li>
  29. <li>第4li元素</li>`;
  30. // 将str3字符串添加ul里面
  31. $('ul').html(str3);
  32. </script>
  33. </body>

2. $(选择器).text() 相当于innerText

  1. 同上,不再举例

3. $(选择器).val() 相当于input元素的.value

  1. <head>
  2. <style>
  3. .active {
  4. color: red;
  5. }
  6. li {
  7. cursor: pointer;
  8. }
  9. </style>
  10. </head>
  11. <body>
  12. <div id="app">
  13. <input id="username" type="text" value="huruqing"><br/>
  14. <input id="phone" type="text">
  15. </div>
  16. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  17. <script>
  18. // 读取输入框#username的值
  19. var username = $('#username').val();
  20. console.log('username', username);
  21. // 设置#phone输入框的值
  22. $('#phone').val(13811112222);
  23. </script>
  24. </body>

4. $(选择器).append() 相当于appendChild

  1. <body>
  2. <ul>
  3. <li>xxx</li>
  4. <li>xxx</li>
  5. <li>xxx</li>
  6. </ul>
  7. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  8. <script>
  9. // 在ul后面再添加一条数据
  10. $('ul').append('<li>我是新来的</li>');
  11. </script>
  12. </body>

(五) 操作 css

1. 添加或移除一个类

  • $(选择器).addClass(类名) 添加class;
  • $(选择器).removeClass(类名) 移除class;
  1. <head>
  2. <style>
  3. .red {
  4. color: red;
  5. }
  6. </style>
  7. </head>
  8. <body>
  9. <div id="app" class="flex f12">asdfasdffsf</div>
  10. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  11. <script>
  12. // 添加class red
  13. $('#app').addClass('red');
  14. // 移除class red
  15. setTimeout(function() {
  16. $('#app').removeClass('red');
  17. }, 2000)
  18. </script>

2. $(选择器).toggleClass(类名) // 有则去掉,无则加上

  1. <head>
  2. <meta charset="UTF-8">
  3. <style>
  4. .dsn {
  5. display: none;
  6. }
  7. </style>
  8. </head>
  9. <body>
  10. <button>点击</button>
  11. <div id="app">
  12. <p> asdfasdfasdfasdfasdf </p>
  13. <p> asdfasdfasdfasdfasdf </p>
  14. <p> asdfasdfasdfasdfasdf </p>
  15. <p> asdfasdfasdfasdfasdf </p>
  16. </div>
  17. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  18. <script>
  19. $('button').on('click', function() {
  20. // 若#app没有dsn类就加上,有则移除
  21. $('#app').toggleClass('dsn');
  22. })
  23. </script>
  24. </body>

3. $(选择器).css() // 获取样式和设置样

  1. <head>
  2. <style>
  3. .red {
  4. color: red;
  5. font-size: 20px;
  6. }
  7. </style>
  8. </head>
  9. <body>
  10. <div class="red">asdfasdffsf</div>
  11. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  12. <script>
  13. // 获取字体大小
  14. var size = $('.red').css('font-size');
  15. console.log('font-size', size);
  16. // 设置样式:背景变灰色,添加边框,可以连着写
  17. $('.red').css('background-color', 'gray');
  18. $('.red').css('border', '2px solid blue');
  19. // 链式调用
  20. setTimeout(function() {
  21. $('.red').css('background-color', 'green').css('border', '2px solid red').css('font-size', '26px');
  22. }, 2000)
  23. </script>

(六) 操作属性

1. $(选择器).attr() 获取属性或者设置属性

  1. <body>
  2. <a href="http://www.baidu.com">百度</a>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  4. <script>
  5. // 获取a标签的href属性
  6. var href = $('a').attr('href');
  7. console.log('href', href);
  8. // 2秒后把百度换成新浪,同时改变它的href地址
  9. setTimeout(function() {
  10. $('a').text('新浪');
  11. $('a').attr('href', 'http://sina.com');
  12. }, 2000)
  13. </script>
  14. </body>

2. $(选择器).removeAttr() 删除属性

  1. <body>
  2. <a href="http://www.baidu.com">百度</a>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  4. <script>
  5. // 两秒后删除属性href
  6. setTimeout(function() {
  7. $('a').removeAttr('href');
  8. }, 2000)
  9. </script>
  10. </body>

3. $(选择器).prop() 操作属性 类似attr, 当attr不管用的时候使用prop

  1. <body>
  2. <input type="radio" checked>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  4. <script>
  5. var flag = $('input').attr('checked');
  6. </script>
  7. </body>

(七) 效果

1. show() 显示和hide() 隐藏

  1. <body>
  2. <div class="box">
  3. <p>sadfasdfasdfasdfasdfasdf</p>
  4. <p>sadfasdfasdfasdfasdfasdf</p>
  5. <p>sadfasdfasdfasdfasdfasdf</p>
  6. <p>sadfasdfasdfasdfasdfasdf</p>
  7. <p>sadfasdfasdfasdfasdfasdf</p>
  8. </div>
  9. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  10. <script>
  11. // 2秒后隐藏div
  12. setTimeout(function() {
  13. $('.box').hide();
  14. }, 2000);
  15. // 1秒后显示div
  16. setTimeout(function() {
  17. $('.box').show();
  18. }, 3000)
  19. </script>

2. 滑动 上 slideUp() 下 slideDown()

  1. <body>
  2. <div class="box">
  3. <p>这是一个段落。</p>
  4. <p>这是一个段落。</p>
  5. <p>这是一个段落。</p>
  6. <p>这是一个段落。</p>
  7. <p>这是一个段落。</p>
  8. <p>这是一个段落。</p>
  9. <p>这是一个段落。</p>
  10. </div>
  11. <button class="btn1">上滑</button>
  12. <button class="btn2">下滑</button>
  13. <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
  14. </script>
  15. <script>
  16. // 点击.btn1向上滑动
  17. $('.btn1').on('click', function() {
  18. $('.box').slideUp();
  19. })
  20. // 点击.btn2向下滑动
  21. $('.btn2').on('click', function() {
  22. $('.box').slideDown();
  23. })
  24. </script>
  25. </body>

3. 淡入淡出 https://www.runoob.com/jquery/jquery-fade.html

(八) 插件

https://www.jq22.com/jq1-jq3
一个日期插件示例

  1. <head>
  2. <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
  3. </script>
  4. <script src="./date-plugin/zane-calendar.min.js"></script>
  5. <style>
  6. .box {
  7. width: 600px;
  8. height: 600px;
  9. margin: 0 auto;
  10. padding: 50px;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <input type="text" name="" id="date">
  16. <script>
  17. zaneDate({
  18. elem: '#date'
  19. });
  20. </script>
  21. </body>

(十) zepto.js

移动版的jquey

(十一) underscore.js 和 loadash js 库

(十二) 重写计算器

  1. 引入jQuery.js
  2. 实现点击数字, 数字显示在输入框
    1. (1) 绑定事件: 使用事件托管

(十三) 重写todoList

  1. 自定义属性
    ```

    xxxx

// 获取自定义属性 $(‘p’).data(‘index’); ```