11.5 jQuery

引入方式:

  1. 方式一:本地引入
  2. <script src="jquery-3.3.1.min.js"></script>
  3. <script> //注意,一定在引入jQuery之后,再使用jQuery提供的各种操作
  4. code...
  5. </script>

  6. 方式二:直接使用CDN
  7. <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
  8. <script>
  9. code...
  10. </script>

文档就绪事件:

DOM文档加载的步骤

  1. 1. 解析HTML结构。
  2. 2. 加载外部脚本和样式表文件。
  3. 3. 解析并执行脚本代码。
  4. 4. DOM树构建完成。
  5. 5. 加载图片等外部文件。
  6. 6. 页面加载完毕
11.51 选择器
  1. id选择器:
  2. $("#i1")
  3. 标签选择器:
  4. $("p")
  5. class选择器:
  6. $(".c1")
  7. 所有元素选择器:
  8. $("*")
  9. 交集选择器:
  10. $("div.c1") // 找到类为c1的div标签
  11. 并集选择器:
  12. $("#i1,.c1,p") // 找到所有id="i1"的标签和class="c1"的标签和p标签
  13. 层级选择器:
  14. $("x y"); // x的所有后代y(子子孙孙)
  15. $("x>y"); // x的所有儿子y(儿子)
  16. $("x+y") // 找到所有紧挨在x后面的兄弟y
  17. $("x~y") // x之后所有的兄弟y
  18. 属性选择器:
  19. $("input[type='checkbox']"); // 取到checkbox类型的input标签
  20. $("input[type!='text']"); // 取到类型不是text的input标签

基本筛选器:

  1. :first // 第一个
  2. :last // 最后一个
  3. :eq(index) // 索引等于index的那个元素
  4. :even // 匹配所有索引值为偶数的元素,从 0 开始计数
  5. :odd // 匹配所有索引值为奇数的元素,从 0 开始计数
  6. :gt(index) // 匹配所有大于给定索引值的元素
  7. :lt(index) // 匹配所有小于给定索引值的元素
  8. :not(选择器) // 过滤掉所有满足not条件的标签
  9. :has(选择器) // 过滤出所有后代中满足has条件的父标签

  10. //例如
  11. $("div:has(h1)") // 找到所有后代中有h1标签的div标签
  12. $("div:has(.c1)") // 找到所有后代中有c1样式类的div标签
  13. $("li:not(.c1)") // 找到所有不包含c1样式类的li标签
  14. $("li:not(:has(a))") // 找到所有后代中不含a标签的li标签
11.52 表单常用筛选器

表单常用筛选:

  1. :text
  2. :password
  3. :file
  4. :radio
  5. :checkbox
  6. :submit
  7. :reset
  8. :button
  9. 例:
  10. $(":checkbox") // 找到所有的checkbox

表单对象状态属性筛选:

  1. :enabled
  2. :disabled
  3. :checked
  4. :selected

注意:$(":checked")选择时连select中的带有selected属性的option标签也会选上,所以要用$("input:checked")

11.53 筛选器
  1. 下一个兄弟元素:
  2. $("#id").next()
  3. $("#id").nextAll()
  4. $("#id").nextUntil("#i2") //从id="id"的标签开始往下选择兄弟标签直到id=i2的标签(不包含id=i2的标签)
  5. 上一个兄弟元素:
  6. $("#id").prev()
  7. $("#id").prevAll()
  8. $("#id").prevUntil("#i2") //从id="id"的标签开始往上选择兄弟标签直到id=i2的标签(不包含id=i2的标签)
  9. 父亲元素:
  10. $("#id").parent()
  11. $("#id").parents() // 查找当前元素的所有的父辈元素
  12. $("#id").parentsUntil("某个父元素") // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。
  13. 儿子和兄弟元素:
  14. $("#id").children(); // 所有子标签
  15. $("#id").siblings(); // 兄弟标签、
  16. 查找
  17. $("div").find("p") <==> $("div p")
  18. //搜索所有与指定表达式匹配的元素,这个函数是找出正在处理的元素的后代元素的好方法。
  19. 筛选
  20. $("div").filter(".c1") <==> $("div.c1") // 从结果集中过滤出有c1样式类的
  21. //筛选出与指定表达式匹配的元素集合,这个方法用于缩小匹配的范围,用逗号分隔多个表达式。
  22. .first() // 获取匹配的第一个元素
  23. .last() // 获取匹配的最后一个元素
  24. .not() // 从匹配元素的集合中删除与指定表达式匹配的元素
  25. .has() // 保留包含特定后代的父元素,去掉那些不含有指定后代的元素。
  26. .eq() // 索引值等于指定值的元素
11.54 标签操作之样式操作
11.541 通过类属性操作样式
  1. addClass(); // 添加指定的CSS类名。
  2. removeClass(); // 移除指定的CSS类名。
  3. hasClass(); // 判断样式存不存在
  4. toggleClass(); // 切换CSS类名,如果有就移除,如果没有就添加。
11.542 直接操作CSS样式
  1. css("color","red") //DOM操作:Elem.style.color="red"
  2. $("p").css("color", "red"); //将所有p标签的字体设置为红色
  3. $("#p1").css({"border":"1px solid black","color":"red"});//同时设置多个css样式
11.543 jQuery版模态框
  1. <head>
  2. <style>
  3. .cover {
  4. position: fixed;
  5. top: 0;
  6. right: 0;
  7. bottom: 0;
  8. left: 0;
  9. background-color: rgba(0,0,0,0.4);
  10. z-index: 999;
  11. }
  12. .modal {
  13. background-color: white;
  14. height: 300px;
  15. width: 500px;
  16. position: absolute;
  17. top: 50%;
  18. left: 50%;
  19. z-index:1000;
  20. margin-top: -150px;
  21. margin-left: -250px;
  22. }
  23. .hide {
  24. display: none; //不占空间,也不显示
  25. }
  26. </style>
  27. </head>
  28. <body>
  29. <div>
  30. <h1>海燕</h1>
  31. <p>在苍茫的大海上,狂风卷积着乌云,在乌云和大海之间,海燕像黑色的闪电,在高傲的飞翔。</p>
  32. </div>
  33. <button id="b1">点我登录</button>
  34. <div class="cover hide"></div>
  35. <div class="modal hide">
  36. <form action="">
  37. <p>
  38. <label>用户名
  39. <input type="text">
  40. </label>
  41. </p>
  42. <p>
  43. <label>密码
  44. <input type="password">
  45. </label>
  46. </p>
  47. <p>
  48. <input type="submit">
  49. <input type="button" id="cancel" value="取消">
  50. </p>
  51. </form>
  52. </div>
  53. <script src="jquery-3.3.1.min.js"></script>
  54. <script>
  55. // var b1Ele=document.getElementById("b1"); //原生DOM对象
  56. // var b1Ele = $("#b1")[0]; //通过jQuery对象找到DOM对象,找到按钮,给它绑定事件,
  57. // b1Ele.onclick = function () { //使用的是js对象
  58. // $(".cover,.modal").removeClass("hide"); // 事件触发后,找到那两个div,移除它们的hide样式类
  59. // };

  60. var b1Ele = $("#b1");
  61. b1Ele.click(function () {
  62. $(".cover,.modal").removeClass("hide");
  63. });

  64. // var cancelButton = $("#cancel")[0]; //使用的是DOM对象
  65. // cancelButton.onclick = ()=>{
  66. // $(".cover,.modal").addClass("hide"); // 事件触发后,找到那两个div,给它们添加hide样式类
  67. // };
  68. var cancelButton = $("#cancel");
  69. cancelButton.click(function () {
  70. $(".cover,.modal").addClass("hide");
  71. });
  72. </script>
  73. </body>
11.544 位置
  1. offset() // 获取匹配元素在当前窗口的相对偏移或设置元素位置,可设置
  2. $(".c3").offset({top:284,left:400})
  3. position() // 获取匹配元素相对父元素的偏移,不可设置
  4. $(window).scrollTop() // 获取匹配元素相对滚动条顶部的偏移,可设置
  5. $(window).scrollTop(0) //获取当前窗口相对滚动条顶部的偏移,并且可设置
  6. $(window).scrollLeft() // 获取匹配元素相对滚动条左侧的偏移,可设置

.offset()方法允许我们检索一个元素相对于文档(document)的当前位置。.position()的差别在于: .position()是相对于父级元素的位移。

11.545 尺寸
  1. height() //获取当前标签内容高度,并且可设置高度
  2. width() //获取当前标签内容宽度,并且可设置宽度
  3. innerHeight() //内容+padding
  4. innerWidth() //内容+padding
  5. outerHeight() //内容+padding+border
  6. outerWidth() //内容+padding+border
11.55 标签操作之文本内容操作
  1. text() //只查看所有标签内的文本
  2. text(val) //先清空节点内容,再添加文本字符串:('<h1>我是h1</h1>')
  3. 注意:值为标签的时候 不会被渲染为标签元素 只会被当做值渲染到浏览器中

  4. html() //查看所有子标签,包括文本和子标签
  5. html(val) //先清空节点内容,可识别文本内的html标签('<h1>我是h1</h1>')
  6. $('ul').html('<a href="#">百度一下</a>')
  7. $('ul').html(function(){ //可以使用函数来设置所有匹配元素的内容
  8. return '哈哈哈'
  9. })

  10. val
  11. // 用途:val()用于操作input、select、textarea的value值
  12. // 示范一:
  13. <input type="text" name="username" >
  14. $('input[type=text]').val() //查看输入框内的值或添加值
  15. <input type="radio" name="sex" value="male">
  16. <input type="radio" name="sex" value="female">
  17. <input type="radio" name="sex" value="none">
  18. $('input[type=radio]').val(['male',]) //查看所选选项或选择选项,选择选项时使用列表

  19. // 示范二:
  20. <input type="checkbox" name="hobbies" value="basketball">
  21. <input type="checkbox" name="hobbies" value="football">
  22. <input type="checkbox" name="hobbies" value="doublecolorball">
  23. $('input[type=checkbox]').val(['basketball','football']) //查看所选选项或选择选项(选择选项时使用列表)
11.551 登录注册示例
  1. <style>
  2. .error {color: red;}
  3. </style>
  4. <body>
  5. <form action="" method="">
  6. <p>
  7. <label for="username">用户名</label>
  8. <input type="text" id="username" name="username">
  9. <span class="error"></span>
  10. </p>
  11. <p>
  12. <label for="pwd">密码</label>
  13. <input type="password" id="pwd" name="pwd">
  14. <span class="error"></span>
  15. </p>
  16. <p>
  17. <input type="submit" id="b1" value="登录">
  18. </p>
  19. </form>
  20. <script src="jquery-3.3.1.min.js"></script>
  21. <script>
  22. $("#b1").click(function () {
  23. var flag = true;
  24. $(".error").text("");
  25. var $username = $("#username");
  26. var $pwd = $("#pwd");
  27.  
  28. if ($username.val().length === 0){ // 取input框的值(用户名)判断长度是否为0
  29. $username.next().text("用户名不能为空!"); //找到class="error"的span标签添加提示信息
  30. flag = false; //用户名或密码为空时不提交表单
  31. }
  32. if ($pwd.val().length === 0){ //取input框的值(密码)判断长度是否为0
  33. $pwd.next().text("密码不能为空!"); //找到class="error"的span标签添加提示信息
  34. flag = false;
  35. }
  36. return flag; // 表单填写有误就会返回false,阻止submit按钮默认的提交表单事件
  37. })
  38. </script>
  39. </body>
11.56 标签操作之属性操作

用于id、class、name、value等或自定义属性:

  1. <images src="1.jpg" alt="图片不见了" title="这绝对正常的图片">
  2. attr(属性名) // 返回第一个匹配元素的属性值
  3. $('.box2 img').attr('title','美女') // 为所有匹配元素设置一个属性值
  4. $('.box2 img').attr({'title': '美女', 'alt':'图片被狗吃了'}) // 为所有匹配元素设置多个属性值
  5. $('.box2 img').removeAttr('title') // 从每一个匹配的元素中删除一个属性

用于checkbox和radio:

  1. <input type="radio" name="sex" value="male">
  2. $(':radio[value=male]').prop('checked',true);// 设置属性

  3. <input type="checkbox" name="hobbies" value="basketball">
  4. $("input :checkbox").prop('value') // 获取value属性的值
  5. $("input :checkbox").prop('checked',true); // 设置属性
  6. $(':checkbox[value=football]').prop('checked',true);
  7. $("table :checkbox").removeProp('value') // 移除value属性

注意:在1.x及2.x版本的jQuery中使用attr对checkbox进行赋值操作时会出bug,在3.x版本的jQuery中则没有这个问题。为了兼容性,我们在处理checkbox和radio的时候尽量使用特定的prop(),不要使用attr("checked", "checked")

总结:1. 对于标签上有的能看到的属性和自定义属性都用attr 2. 对于返回布尔值的比如checkboxradiooption的是否被选中都用prop。

11.561 全选反选取消
  1. <body>
  2. <button id="b1">全选</button>
  3. <button id="b2">取消</button>
  4. <button id="b3">反选</button>
  5. <table border="1">
  6. <thead>
  7. <tr>
  8. <th>#</th>
  9. <th>姓名</th>
  10. <th>爱好</th>
  11. </tr>
  12. </thead>
  13. <tbody>
  14. <tr>
  15. <td><input type="checkbox"></td>
  16. <td>Egon</td>
  17. <td>喊麦</td>
  18. </tr>
  19. <tr>
  20. <td><input type="checkbox"></td>
  21. <td>Alex</td>
  22. <td>吹牛逼</td>
  23. </tr>
  24. <tr>
  25. <td><input type="checkbox"></td>
  26. <td>Yuan</td>
  27. <td>不洗头</td>
  28. </tr>
  29. </tbody>
  30. </table>
  31. <script src="jquery-3.3.1.min.js"></script>
  32. <script>
  33. // 全选
  34. $("#b1").click(function () {
  35. $("table :checkbox").prop("checked", true)// 让所有的checkbox选中
  36. });
  37. // 取消
  38. $("#b2").click(function () {
  39. $("table :checkbox").prop("checked", false)// 让所有的checkbox取消选中
  40. });
  41. // 反选
  42. $("#b3").click(function () {
  43. //$("table input:not(:checked)").prop("checked", true); // 找到没有选中的让它们选中
  44. //$("table input:checked").prop("checked", false); // 找到所有选中的让它们取消选中
  45. // 方法1:循环判断
  46. var $checkboxs = $("table input:checkbox");
  47. for (let i=0;i<$checkboxs.length;i++){
  48. var $currentCheckbox = $($checkboxs[i]);
  49. if ($currentCheckbox.prop("checked")){ // 如果之前是选中的,则取消选择
  50. $currentCheckbox.prop("checked", false);
  51. }else {
  52. $currentCheckbox.prop("checked", true);// 如果之前没有选中,则选择
  53. }
  54. }
  55.  
  56. //方法2:直接取当前标签的checked属性的相反值
  57. for (let i=0;i<$checkboxs.length;i++){
  58. var $currentCheckbox = $($checkboxs[i]);
  59. var flag = $currentCheckbox.prop("checked");
  60. $currentCheckbox.prop("checked", !flag)
  61. }
  62.  
  63. //方法3:
  64. $('td input').each(function () {
  65. $(this).prop('checked', !$(this).prop('checked'));
  66. }
  67. });
  68. </script>
  69. </body>
11.57 标签操作之文档处理
  1. //内部
  2. $(A).appendTo(B) // 把A追加到B内部的最后面
  3. $(A).prependTo(B) // 把A前置到B内部的最前面
  4. //内部
  5. $(A).append(B) // 把B追加到A内部的最后
  6. $(A).prepend(B) // 把B前置到A内部的最前面

  7. //外部
  8. $(A).insertAfter(B) // 把A放到B外部的后面
  9. $(A).insertBefore(B) // 把A放到B外部的前面
  10. //外部
  11. $(A).after(B) // 把B放到A外部的后面
  12. $(A).before(B) // 把B放到A外部的前面

移除和清空元素:

  1. $('.p1').remove() //从DOM中删除所有匹配的元素(标签和事件),被删掉的对象做返回值,包括删除自身

  2. var $btn=$('button').detach() // 删除标签,保留事件,被删掉的对象做返回值
  3. $('ul').append($btn) //此时按钮能追加到ul中

  4. $('.p1').empty() // 清空匹配的元素集合中所有的子节点,不包括自身

替换:

  1. $('.p1').replaceWith($('.p2')) //后面的替换前面的所有.p1标签
  2. $('.p1').replaceAll($('.p2')) //前面的替换后面的所有.p2标签

克隆:

  1. .clone(true) //不加参数true,克隆标签但不克隆标签带的事件,加参数true,克隆标签并且克隆标签带的事件
11.571 克隆示例
  1. <head>
  2. <style>
  3. #b1 {
  4. background-color: deeppink;
  5. padding: 5px;
  6. color: white;
  7. margin: 5px;
  8. }
  9. #b2 {
  10. background-color: dodgerblue;
  11. padding: 5px;
  12. color: white;
  13. margin: 5px;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <button id="b1">屠龙宝刀,点击就送</button>
  19. <button id="b2">屠龙宝刀,点击就送</button>
  20. <script src="jquery-3.3.1.min.js"></script>
  21. <script>
  22. $("#b1").on("click", function () { // clone方法不加参数true,克隆标签但不克隆标签带的事件
  23. $(this).clone().insertAfter(this);
  24. });
  25. $("#b2").on("click", function () { // clone方法加参数true,克隆标签并且克隆标签带的事件
  26. $(this).clone(true).insertAfter(this);
  27. });
  28. </script>
  29. </body>

python 之 前端开发( jQuery选择器、筛选器、样式操作、文本操作、属性操作、文档操作)的更多相关文章

  1. jQuery 选择器 筛选器 样式操作 文本操作 属性操作 文档处理 事件 动画效果 插件 each、data、Ajax

    jQuery jQuery介绍 1.jQuery是一个轻量级的.兼容多浏览器的JavaScript库. 2.jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方 ...

  2. Jquery框架1.选择器|效果图|属性、文档操作

    1.JavaScript和jquery的对比 书写繁琐,代码量大 代码复杂 动画效果,很难实现.使用定时器 各种操作和处理 <!DOCTYPE html> <html lang=&q ...

  3. jquery选择器筛选器

    jQuery对象 Query 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 jQuery 里 ...

  4. JQuery 选择器 筛选器

    什么是jQuery对象 参考:http://jquery.cuishifeng.cn/css.html jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQue ...

  5. jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jquery筛选方法

    jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jq ...

  6. python 之 前端开发( jQuery事件、动画效果、.each()、 .data())

    11.58 事件 11.581 事件绑定方法与解绑 绑定事件: // 绑定方式一: $('.box1').click(function () { alert('绑定方式一') }); ​ // 绑定方 ...

  7. 前端开发 - JQuery&Bootstrap - 总结

    一.JavaScript和Jquery的区别 1.javascript的缺点: 1.书写繁琐,代码量大 2.代码复杂 3.动画效果,很难实现.使用定时器 各种操作和处理 2.定义: 1.Javascr ...

  8. Python web前端 09 jQuery

    Python web前端 09 jQuery 一.三个重要网址 http://jquery.cuishifeng.cn/ #中文查询网站 http://www.bootcdn.cn/ #引入jq ht ...

  9. python 全栈开发,Day54(jQuery的属性操作,使用jQuery操作input的value值,jQuery的文档操作)

    昨日内容回顾 jQuery 宗旨:write less do more 就是js的库,它是javascript的基础上封装的一个框架 在前端中,一个js文件就是一个模块 一.用法: 1.引入包 2.入 ...

  10. 前端开发—jQuery

    jquery简介 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Ajax交互, ...

随机推荐

  1. Impala 介绍(转载)

    一.简介 1.概述 Impala是Cloudera公司推出,提供对HDFS.Hbase数据的高性能.低延迟的交互式SQL查询功能. •基于Hive使用内存计算,兼顾数据仓库.具有实时.批处理.多并发等 ...

  2. /proc/pid/statm content analysis

    root@am335x-ec:/# cat /proc/1/statm 6141 1181 699 232 0 4641 0 Table 1-3: Contents of the statm file ...

  3. Redis存储Set

    与List不同Set不能存储相同元素,且数据没有顺序. 存储结构: 1.存储与查看数据: 2.删除指定的一个元素: 3.判断是否存在某一个元素(存在返回1,不存在返回0): 4.判断两个set中的特有 ...

  4. Using HAProxy as an API Gateway, Part 1 [Introduction]

    转自:https://www.haproxy.com/blog/using-haproxy-as-an-api-gateway-part-1/ An API gateway handles load ...

  5. PHP.INI生成环境配置文件

    extension_dir = /home/php/lib/php/extensions/no-debug-zts- zend_extension = opcache.so extension = p ...

  6. 洛谷 P1880 [NOI1995]石子合并 题解

    P1880 [NOI1995]石子合并 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试 ...

  7. NCCloud

    NC后台核心服务开发模式不变 NC原Client代码废弃 增加NC Web端Java代码 增加前端JS代码 原有的NC公共能力基本保留:模板.精度.自定义项等

  8. Spring MVC JSON乱码问题

    之前项目中也遇到过返回JSON时乱码问题,当时找到了一个方法解决了问题但是没有明白原因,今天这个项目又遇到了JSON乱码问题,用之前的方法不行,看了这篇博文才明白为什么 @RequestMapping ...

  9. HBase 介绍

    HBase的列族式存储 列族式存储的概念 HBase Table的组成 Table = RowKey + Family + Column + Timestamp + Value 数据存储模式 (Row ...

  10. Java_jdbc 基础笔记之十一数据库连接 (通用的查询方法)

    鉴于之前的查询方法,在这里我们可以写一个通用的方法 /** * 鉴于 student.和customer查询的方法有好多相同之处,在此可以写一个通用的方法 */ public <T> T ...