JQuery_1(概念、js与jq对象的转换、选择器、DOM操作、CRED标签、动画、jq的遍历方式、事件绑定、插件)

一、jQuery基础

1.1 概念

  1. 一个Javascript框架。简化JS开发。
    • jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
    • JavaScript框架:本质上就是一些js文件,封装了js的原生代码而已

1.2 快速入门

  1. 步骤
    1. 下载jQuery
      • 目前jQuery有三个大版本:
        1.x:兼容ie678,使用最为广泛的,官方只做BUG维护,
        功能不再新增。因此一般项目来说,使用1.x版本就可以了,
        最终版本:1.12.4 (2016年5月20日)
        2.x:不兼容ie678,很少有人使用,官方只做BUG维护,
        功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x,
        最终版本:2.2.4 (2016年5月20日)
        3.x:不兼容ie678,只支持最新的浏览器。除非特殊要求,
        一般不会使用3.x版本的,很多老的jQuery插件不支持这个版本。
        目前该版本是官方主要更新维护的版本。最新版本:3.2.1(2017年3月20日)
      • jQuery-xxx.js与jQuery-xxx.min.js的区别
        1. jQuery-xxx.js:开发版本。给程序员可看的,有良好的缩进和注释。体积更大
        2. jQuery-xxx.min.js:生产版本。程序中使用,没有缩进。体积更小,程序加载更快
    2. 导入jQuery的js文件:导入min.js文件
    3. 使用
    <!--    导入JQuery框架-->
    <script src="../JQuery框架/jquery-3.3.1.min.js"></script>
    <div id="div1">div1...........</div>
    <div id="div2">div2...........</div>
    <script>
        //通过ID获取对象
        var div1 = $("#div1");
        //获取里面的html代码,相当于innerHTML
        alert(div1.html());
        var div2 = $("#div2");
        alert(div2.html());
    </script>

1.3 jQuery对象与js对象区别与转换

  1. JQuery对象在操作时更加方便
  2. JQuery对象和js对象方法不通用
  3. 两者相互装换
    1. jq -> js:
      1. jq对象[索引] 或者 jq对象.get[索引]
    2. js -> jq:
      1. $(js对象)

1.4 选择器(重要)

  1. 筛选具有相似特征的元素(标签)

  2. 基本语法学习:

    1. 事件绑定

         //给Id为b1的按钮添加单击响应函数
          $("#b1").click(function () {
              //单击响应操作
          }); 
      
           
           
      • 入口函数

                //jquery入口函数(HTML文档加载完成后执行该函数中的代码)
                $(function(){
                      //要执行的代码
                    });
                });
        
             
             
          • window.onload$(function)区别
            1. window.onload只能定义一次,如果定义多次,后边的会将前边的覆盖掉
            2. $(function)可以定义多次
        • 样式的控制

                  $(function () {
             	         //给id为div1的标签的背景颜色设为红色
                      $("#div1").css("background-color", "red");
                       //给id为div2的标签的背景颜色设为红色
                      $("#div2").css("backgroundColor", "pink");
                  });
          
               
               
      • 分类

        1. 基本选择器

          1. 标签选择器(元素选择器)

            • 语法: $("html标签名") 获得所有匹配标签名称的元素
            1. id选择器
              • 语法: $("#id的属性值") 获得与指定id属性值匹配的元素
            2. 类选择器
              • 语法: $(".class的属性值") 获得与指定的class属性值匹配的元素
            3. 并集选择器:
              • 语法: $("选择器1,选择器2....") 获取多个选择器选中的所有元素
        2. 层级选择器

          1. 后代选择器
            • 语法: $("A B ") 选择A元素内部的所有B元素
          2. 子选择器
            • 语法: $("A > B") 选择A元素内部的所有B子元素
        3. 属性选择器

          1. 属性名称选择器

            • 语法: $("选择器[属性名]") 包含指定属性的选择器
          2. 属性选择器

            • 语法: $("选择器[属性名='值']") 包含指定属性等于指定值的选择器
            • 语法:$("选择器[属性名^='值']")选着器的属性值是以该值开始的
            • 语法:$("选择器[属性名$='值']")选着器的属性值是以该值结束的
            • 语法:$("选择器[属性名*='值']")选着器的属性值包含该值
          3. 复合属性选择器

            • 语法: $("选择器[属性名='值'][]...") 包含多个属性条件的选择器

              $("div[id][title*='es']").css("backgroundColor","red");
              
                       
                       
          4. 过滤选择器

            1. 首元素选择器
              •     语法: :first 获得选择的元素中的第一个元素
            2. 尾元素选择器
              •     语法: :last 获得选择的元素中的最后一个元素
            3. 非元素选择器
              •     语法: :not(selector) 不包括指定内容的元素
            4. 偶数选择器
              •     语法: :even 偶数,从 0 开始计数
            5. 奇数选择器
              •     语法: :odd 奇数,从 0 开始计数
            6. 等于索引选择器
              •     语法: :eq(index) 指定索引元素
            7. 大于索引选择器
              •     语法: :gt(index) 大于指定索引元素>
            8. 小于索引选择器
              •     语法: :lt(index) 小于指定索引元素
            9. 标题选择器
              •     语法: :header 获得标题(h1~h6)元素,固定写法>
          5. 表单过滤选择器

            1. 可用元素选择器

              • 语法: :enabled 获得可用元素

                将指定的可用的文本框的值改为123
                $("input[type='text']:enabled").val("123");
                
                        
                        
              • 不可用元素选择器

                • 语法: :disabled 获得不可用元素

                  将指定的不可用的文本框的值改为123
                  $("input[type='text']:disabled").val("123");
                  
                          
                          
                • 选中选择器

                  • 语法: :checked 获得单选/复选框选中的元素

                    获取指定复选框选中的元素的个数
                    $("input[type='checkbox']:checked").length;
                    
                            
                            
                  • 选中选择器

                    • 语法: :selected 获得下拉框选中的元素

                      获取指定下拉框选中元素的个数
                      $("#job>option:selected").length;
                      
                              
                              

                1.5 DOM操作

                1.5.1 内容操作

                1. html():获取/设置元素的标签体内容(填值为设置,不填值为获取)
                2. text():获取/设置元素的标签纯文本内容
                3. val():获取/设置元素的value的值

                1.5.2 标签元素的属性操作

                1. 通用属性操作

                  1. attr():获取/设置元素的属性(填值为设置值,不填值为获取)
                  2. removeAttr():删除属性
                  3. prop():获取/设置元素的属性
                  4. removeProp()删除属性
                  • attrprop区别
                    1. 如果操作的是元素的固有属性(原本就有的),建议使用prop
                    2. 如果操作的是元素自定义的属性,建议使用attr
                2. 			//获取北京节点的name属性值
                  			$("#bj").attr("name");
                  			//设置北京节点的name属性的值为dabeijing
                  			$("#bj").attr("name","dabeijing");
                  			//新增北京节点的discription属性 属性值是didu
                  			$("#bj").attr("discription","didu");
                  			//删除北京节点的name属性并检验name属性是否存在
                  			$("#bj").removeAttr("name");
                  			//获得hobby的的选中状态
                  			$("#hobby").prop("checked");
                  
                    
                    
                  • 对class属性的操作

                    1. addClass():添加class属性值
                    2. removeClass():删除class属性值
                    3. toggleClass():切换class属性
                      1.        toggleClass("one"):判断如果元素对象上存在class=“one”,则将属性值one删除。判断如果元素对象上不存在class=“one”,则将添加属性值one。
                    4. css(css属性,值)把该css的属性设置为该值

                  1.5.3 CRUD标签元素的操作

                  1. append():父元素将子元素追加到末尾
                    •       对象1.append(对象2):将对象2添加到对象1元素内部,并且在末尾
                  2. prepend():父元素将子元素追加到开头
                    •       对象1.prepend(对象2):将对象2添加到对象1元素内部,并且在开头
                  3. appendTo()
                    •       对象1.append(对象2):将对象1添加到对象2元素内部,并且在末尾
                  4. prependTo()
                    •       对象1.prepend(对象2):将对象1添加到对象2元素内部,并且在开头
                  5. after():添加元素到对应元素后边
                    •       对象1.after(对象2):将对象2添加到对象1后边。对象1和对象2是兄弟关系
                  6. before()
                    •       对象1.before(对象2):将对象2添加到对象1前边。对象1和对象2是兄弟关系
                  7. insertAfter()
                    •       对象1.insertAfter(对象2):将对象2添加到对象1后边。对象1和对象2是兄弟关系
                  8. insertBefore()
                    •       对象1.insertBefore(对象2):将对象2添加到对象1前边。对象1和对象2是兄弟关系
                  9. remove():移除元素
                    •       对象.remove():将对象删除
                  10. empty():清空元素的所有后代元素
                    •       对象.empty():将对象的所有后代元素全部清空,但是保留当前对象及其属性节点
                  11. clone():复制当前对象

                  二、jQuery高级

                  2.1 动画

                  1. 三种方式显示和隐藏元素
                    1. 默认显示和隐藏方式
                      1. show([speed,[easing],[fn]]) 默认显示 相关的参数:
                        1. speed:动画的速度。三个可选的值“slow”,“normal”, “fast”或表示动画时长的毫秒数值(如:1000)
                        2. easing:用来指定切换效果,默认是"swing",可用参数"linear"
                          • swing:动画执行时效果是 先慢,中间快,最后又慢
                          • linear:动画执行时速度是匀速的
                        3. fn:在动画完成时执行的函数,每个元素执行一次。(可以不需要这个参数)
                    2. hide([speed,[easing],[fn]]) 默认隐藏
                    3. toggle([speed],[easing],[fn])默认切换
                  2. 滑动显示和隐藏方式
                    1. slideDown([speed],[easing],[fn])滑动显示
                    2. slideUp([speed,[easing],[fn]])滑动隐藏
                    3. slideToggle([speed],[easing],[fn])滑动切换
                  3. 淡入淡出显示和隐藏方式
                    1. fadeIn([speed],[easing],[fn])
                    2. fadeOut([speed],[easing],[fn])
                    3. fadeToggle([speed,[easing],[fn]])

                  2.2JQuery的遍历方式

                  1. js的遍历方式

                    •        for(初始化值;循环结束条件;步长)
                  2. jq的遍历方式

                    1. jq对象.each(callback)

                      var cities = $("#city li");
                                  cities.each(function () {
                                     //3.1 获取li对象,第一种方式,this
                                     alert(this.innerHTML);
                                  });
                      
                           
                           
                        var cities = $("#city li");
                        //3.2 获取li对象,第二种方式,在回调函数中定义参数 index(索引) element(元素对象)
                        cities.each(function(index, element){
                            //判断如果是上海,则结束循环
                            if("上海" == $(element).html()){
                                //如果当前function返回为false,则结束循环(break)
                                //如果返回为true,则结束本次循环,继续下次循环(continue)
                                 return false;
                             }
                            alert(index + ":" + element.innerHTML);
                        });
                        
                             
                             
                        • $.each(object,[callback])object为要遍历的数组,[callback]为定义的方法体

                          $.each(cities,function () {
                              alert($(this).html()); 
                          });
                          
                               
                               
                          • for (temp of 数组对象):增强for循环。jq3.0之后才有的方式

                            for(li of cities){
                               alert($(li).html());
                            }
                            
                                 
                                 

                          2.3 事件绑定

                          1. jq标准绑定方式

                            1. jq对象.事件方法(回调函数)

                              $("#name").mouseover(function () {
                                    alert("鼠标来了");
                              }).mouseout(function () {
                                    alert("鼠标走了..")
                              });//链式编程,可以同时绑定多个响应函数
                              
                                  
                                  
                            2. on绑定事件/off解除绑定

                              1. jq对象.on("事件名称",回调函数)

                              2. jq对象.off("事件名称")如果不传递参数,将组件上全部事件解绑

                                           $("btn").on("click",function () {
                                               alert("我被点击了");
                                           });
                                            $("btn2").click(function () {
                                                $("#btn").off("click");//不传参,组件上的事件全部解绑
                                            });
                                
                                     
                                     
                              3. 事件切换:toggle

                                1. jq对象.toggle(fn1,fn2)

                                  • 当单击jq对象对应的组件后,会执行fn1,第二次点击后会执行fn2,实现了fun1和fun2相互切换

                                  • 注意:toggle在高版本的jquery插件不支持事件切换,需要导入插件才行jquery-migrate-1.0.0.js

                                          $(function () {
                                             $("#btn").toggle(function(){
                                                 $("#myDiv").css("backgroundColor","green");
                                             },function(){
                                                 $("#myDiv").css("backgroundColor","pink");
                                             })
                                          });
                                  
                                      
                                      

                                2.4 插件

                                1. 插件的作用:增强JQuery的功能

                                  1. 实现方式(两种):

                                    1. $.fn.extend(object)

                                      • 增强通过jquery获取的对象的功能 $("#id")
                                          <script type="text/javascript">
                                              //1. 定义jquery的对象插件
                                              $.fn.extend({
                                                  //相当于定义了一个check()方法,所有Jq对象都可以调用该方法
                                                  check:function () {
                                                      //让复选框选中
                                                      //this:调用该方法的jq对象
                                                      this.prop("checked", true);
                                                  },
                                                  uncheck:function () {
                                                      //让复选框不选中
                                                      this.prop("checked", false);
                                                  }
                                              });
                                              $(function () {
                                                 $("#btn-check").click(function () {
                                                     $("input[type='checkbox']").check();
                                                 });
                                                  $("#btn-uncheck").click(function () {
                                                      $("input[type='checkbox']").uncheck();
                                                  });
                                              });
                                          </script>
                                      
                                           
                                           
                                      • $.extend(object)

                                        • 增强jquery自身的功能 $或者jQuery
                                            <script type="text/javascript">
                                                //对全局方法扩展2个方法,扩展min方法:求2个值的最小值;扩展max方法:求2个值最大值
                                                $.extend({
                                                    max:function () {
                                                        return a > b? a:b;
                                                    },
                                                    min:function () {
                                                        return a < b? a:b;
                                                    }
                                                });
                                                //调用全局方法
                                                var max = $.max(2,3);
                                                alert(max);
                                            </script>
                                        
                                             
                                             
                                    • 1
                                      点赞
                                    • 0
                                      收藏
                                      觉得还不错? 一键收藏
                                    • 打赏
                                      打赏
                                    • 0
                                      评论
                                    省市县(区)三级选择, 含UI, 可用与移动端web开发 ----------------构造函数--------------------- fnBdAdCode({ test:false,//开启测试输出 depth:3, //选择级别,1 省, 2省市, >=3省市县(区) fn:function(name,code,o){}//选择事件,返回参数 name 名称,code GB码,o 元数据{} sheng:"",//初始化查询省{sheng:"江苏省",shi:"扬州市",qu:"广陵区"} 最少要有一个参数 shi:"",//初始化查询市 qu:"",//初始化查询县(区) code:"",//初始化查询code initdom:true//加载选择弹层dom,仅查数据可不加载,手动加载 x.initdom() }); -------------初始化查询元数据------------------------ _so=fnBdAdCode({qu:"回民区",initdom:0,depth:2}); return _so: {"name":"回民区","tag":"内蒙古自治区>呼和浩特市","code":150103,"result":[{"tag":"内蒙古自治区>呼和浩特市>回民区","code":150103}]} 其中: result=[所有匹配结果] 未找到: _so.code=-1 _so.result=[] _so=fnBdAdCode({code:321000}); return _so: {"name":"扬州市","tag":"江苏省>扬州市>扬州市","code":321000,"result":[{"tag":"江苏省>扬州市>扬州市","code":321000}]} 其中: result=[所有匹配结果] 未找到: _so.code=-1 _so.result=[] -------------查询地区code------------------------ _so.getcode({sheng:"江苏省",shi:"扬州市",qu:"广陵区"}); return: 321002 未找到:-1 (_so.code=-1 _so.result=[]) so: {"name":"广陵区","tag":"江苏省>扬州市>广陵区","code":321002,"result":[{"tag":"江苏省>扬州市>广陵区","code":321002}]} 其中: result=[所有匹配结果] _so.getcode({shi:"扬州"}); return: 321000 未找到:-1 (_so.code=-1 _so.result=[]) _so: {"name":"扬州市","tag":"江苏省>扬州市>扬州市","code":321000,"result":[{"tag":"江苏省>扬州市>扬州市","code":321000}]} 其中: result=[所有匹配结果] ------------查询code对应地区------------------------- _so.gettag(150103); return: 内蒙古自治区>呼和浩特市>回民区 未找到:"" (_so.code=-1 _so.result=[]) _so: {"name":"回民区","tag":"内蒙古自治区>呼和浩特市>回民区","code":150103,"result":[{"tag":"内蒙古自治区>呼和浩特市>回民区","code":150103}]} 其中: result=[所有匹配结果] ------------列出所有省份------------------------- _so.shenglst(); return: [[{"tag":"北京市>北京市>北京市","code":110000,"name":"北京市"},{"tag":"天津市>天津市>天津市","code":120000,"name":"天津市"}],...] _so: {"name":"","tag":"","code":31,"result":[{"tag":"北京市>北京市>北京市","code":110000,"name":"北京市"},{"tag":"天津市>天津市>天津市","code":120000,"name":"天津市"}]} 其中: tag|name=都为空, code=省份数据列表长度即:result.length 未找到: code=result.length=0, 省份数据列表=result=[] -------------列出下级城市------------------------ _so.shilst(320000); return: [[{"tag":"江苏省>南京市>南京市","code":320100,"name":"南京市"},{"tag":"江苏省>无锡市>无锡市","code":320200,"name":"无锡市"}],...] _so: {"name":"江苏省","tag":"江苏省>江苏省>江苏省","code":320000,"result":[{"tag":"江苏省>南京市>南京市","code":320100,"name":"南京市"},{"tag":"江苏省>无锡市>无锡市","code":320200,"name":"无锡市"}]} 其中: tag|name|code=当前省份数据 未找到: result=城市数据列表=[] -------------列出下级县(区)------------------------ _so.qulst(321000); return: [[{"tag":"江苏省>扬州市>邗江区","code":321003,"name":"邗江区"},{"tag":"江苏省>扬州市>高邮市","code":321084,"name":"高邮市"}],...] _so: {"name":"扬州市","tag":"江苏省>扬州市>扬州市","code":321000,"result":[{"tag":"江苏省>扬州市>邗江区","code":321003,"name":"邗江区"},{"tag":"江苏省>扬州市>高邮市","code":321084,"name":"高邮市"}]} 其中: tag|name|code=当前城市数据 未找到: result=县(区)数据列表=[]
                                    评论
                                    添加红包

                                    请填写红包祝福语或标题

                                    红包个数最小为10个

                                    红包金额最低5元

                                    当前余额3.43前往充值 >
                                    需支付:10.00
                                    成就一亿技术人!
                                    领取后你会自动成为博主和红包主的粉丝 规则
                                    hope_wisdom
                                    发出的红包

                                    打赏作者

                                    小镇男孩~~

                                    你的鼓励将是我创作的最大动力

                                    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
                                    扫码支付:¥1
                                    获取中
                                    扫码支付

                                    您的余额不足,请更换扫码支付或充值

                                    打赏作者

                                    实付
                                    使用余额支付
                                    点击重新获取
                                    扫码支付
                                    钱包余额 0

                                    抵扣说明:

                                    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
                                    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

                                    余额充值