• jQuery笔记


    <1>隐式迭代:偷偷的遍历,在jQuery中,不需要手动写 for 循环了,会自动进行遍历

          $("li")可以获取所有的 li 元素

    <2>大版本分类

          1.x版本:能够兼容IE678浏览器

          2.x版本:不兼容IE678浏览器

          1.x和2.x版本jquery都不再更新版本了,现在只更新3.x版本。

          3.x版本:不兼容IE678,更加的精简(在国内不流行,因为国内使用jQuery的主要目的就是兼容IE678)

    <3>压缩版和为压缩版

            jquery-1.12.4.min.js:压缩版本,适用于生产环境,因为文件比较小,去除了注释、换行、空格等                                           东西,但是基本没有颗阅读性。
            jquery-1.12.4.js:未压缩版本,适用于学习与开发环境,源码清晰,易阅读。

    <4>jQuery的入口函数

          第一种写法

          $(document).ready(function() {
          });
          第二种写法
          $(function() {
          });
    <5>Jquery入口函数与js入口函数的对比

           1. JavaScript的入口函数要等到页面中所有资源(包括图片、文件)加载完成才开始执行。

           2. jQuery的入口函数只会等待文档树加载完成就开始执行,并不会等待图片、文件的加载。

    <6>jQuery 对象和 DOM对象的区别(重点)

         1. DOM对象:使用JavaScript中的方法获取页面中的元素返回的对象就是dom对象。

         2. jQuery对象:jquery对象就是使用jquery的方法获取页面中的元素返回的对象就是jQuery对象。
         3. jQuery对象其实就是DOM对象的包装集(包装了DOM对象的集合(伪数组))
         4. DOM对象与jQuery对象的方法不能混用。

    <7>DOM 对象转换成 jquery 对象  [联想记忆:花钱]

           $("li") . text( );

           jQuery对象转换成DOM对象

           $("li")[0]

    <8> $符号的实质

           $其实就是一个函数,以后用$的时候,记得跟小括号 $();

           参数不同,功能就不同

           3种用法 

                 1. 参数是一个function, 入口函数

                   $(function () {

             });

    2. $(domobj) 把dom对象转换成jquery对象
    $(document).ready(function () {

    });

    3. 参数是一个字符串,用来找对象
    $("div") $("div ul") $(".current")

    <9> jQuery选择器
    1,基本选择器
    ID选择器 $(“#id”);  类选择器 $(“.class”); 标签选择器 $(“div”); 并集选择器 $(“div,p,li”);  交集选择器 $(“div.redClass”);
    2,层级选择器

                       子代选择器    $(“ul>li”)       使用>号,获取儿子层级的元素,注意,并不会获取孙子层级的元素 
                       后代选择器 | $(“ul li”);      使用空格,代表后代选择器,获取ul下的所有li元素,包括孙子等 

                 3, 过滤选择器

                     这类选择器都带冒号:

                     :eq(index)     $(“li:eq(2)”).css(“color”, ”red”);    获取到的li元素中,选择索引号为2的元素,索引号index从0开始。 

                    :odd   $(“li:odd”).css(“color”, ”red”);   获取到的li元素中,选择索引号为奇数的元素 
                   :even   $(“li:even”).css(“color”, ”red”);   获取到的li元素中,选择索引号为偶数的元素

            4,筛选选择器(方法)
              筛选选择器的功能与过滤选择器有点类似,但是用法不一样,筛选选择器主要是方法。
               children(selector)  $(“ul”).children(“li”)             |

             find(selector)      $(“ul”).find(“li”);     相当于$(“ul li”),后代选择器 |
             siblings(selector)      $(“#first”).siblings(“li”);    查找兄弟节点,不包括自己本身。 
             parent()       $(“#first”).parent();    查找父亲 
             eq(index)    $(“li”).eq(2);      相当于$(“li:eq(2)”),index从0开始 
             next()        $(“li”).next()      找下一个兄弟 
             prev()      $(“li”).prev()       找上一次兄弟

    <10>jQuery  css操作

           ①修改单个样式:css(name, value)  

              $("li").css("backgroundColor","pink");

           ②修改多个样式:

                 css(obj)   $("li").css({ 

                      backgroundColor : "pink";

                      color : "red" ;

                      fontSize : "32px" ;

                  })

             ③获取样式 : css(name)

                 $("li") .eq(0). css("fontSize") ; 

                 隐式迭代:设置操作的时候,会给 jq 内部的所有对象都设置上相同的值

                                   获取的时候,只会返回第一个元素对应的值

    <11>jQuery  classs操作
    ①添加一个类:$("li").addClass("basic");
    ②移除一个类:$("li").removeClass("basic");
    ③判断类:$("li").hasClass("basic");
    ④切换类:$("li").toggleClass("basic") , 如果有 basic 类就移除 basic类,没有这个类就添加这个类

    <12>jQuery属性操作
    样式:是在style里面写的,用css来操作
    属性:在js 里面写的,用attr方法操作
    ①设置单个属性:attr(name, value)
    $("img").attr("alt", "哈哈哈") ;
    ②设置多个属性:
    $("img").attr({
    alt : "hahaha",
    title: "lalalal"
    })
    ③获取属性:
    $("img").attr("alt");

    <13>对于布尔类型的属性,不用 attr 方法,应该用 prop 方法
    <input type="button" value="选中">
    <input type="button" value="不选中">
    <input type="checkbox" id="ck">
    
    <script src="jquery-1.12.4.js"></script>
    <script>
      $(function () {
        $("input").eq(0).click(function () {
          $("#ck").prop("checked", true);
        });
      
        $("input").eq(1).click(function () {
          $("#ck").prop("checked", false);
        });
      });
    </script>
    
    

     <14>jQuery三组基本动画

            ①显示 / 隐藏  

               $("div").show()   //    $("div").hide()

               show(speed ,  callblack)  :  speed动画的持续事件,可以是毫秒值,还可以是固定字符串 

                                         fast : 200ms   normal : 400ms   slow : 600ms 

                                         callback ()还可以传回调函数

             ②滑入滑出:slideIn  /  slideDown

                    slideIn (speed ,  callback)

                    切换: $("div"). slideToggle() ,如果是滑入状态,就执行滑出动画,如果是滑出状态,就执行滑入动画

             ③淡入淡出: fadeIn / fadeOut

                                   fadeIn(speed, callback)

                                   切换:fadeToggle()

      <15>自定义动画

        $("div").animate({left : 800} , 8000 )

                   $("div").animate({left : 800} ,8000, "swing");

                   $("div").animate({left : 800} , 8000 , "linear " , funciton(){} )

                   第一个参数:对象,里面可以传需要动画的样式

                   第二个参数:speed  动画的执行时间

                   第三个参数:动画的执行效果  :  swing :摇摆; linear : 线形,匀速

                   第四个参数:回调函数

     <16>动画队列

            把未执行的动画放在一个队列里面,当前执行的动画结束之后,再挨个执行队列里面的动画

            $("div").animate({left : 800})

                       .animate({width : 300 ,  height : 300})

                       .animate ({ top : 0})

    <17>停止动画

            $("div").slideDown().stop().slideUp();

            $("div").stop(true,true);

           .stop().animate()

            stop:停止当前正在执行的动画

            clearQueue:是否清除动画队列,true  /  false

            jumpToEnd:是否跳转到当前动画的最终效果   true / false

     <18>jQuery节点操作:

        1,创建节点:

        2,添加节点:

              添加到子元素的最后面:

              $("div").append($("p"));

              $("p").appendTo($("div"));

              添加到子元素的前面:

              $("div").prepend($("p"));

              $("p").prependTo($("div"));

              添加到兄弟元素的前面或后面:

              $("div").after($("p"));

              $("div").before($("p”));

              $("#box").append(' <a href="http://www.baidu.com" target="_blank">哈哈哈哈</a>')

      3,清空节点:

              $("div").empty()

              不用 $("div").html(" ") ,因为这个会泄露内存,可以清空一个元素的内容,但是无法清空它里面的事件,就会占用内存,即内存泄漏,而empty()方法可以清空元素内容和事件

      4,删除节点:

              $("div").remove();

      5,克隆节点:

             $("div").clone(true) .appendTo("#box");

            clone()里面不传参数或是参数是 false , 都是深度复制,但不会复制事件

            参数是 true ,也是深度复制,但是可以复制事件

       <19>val()方法

               val方法用于设置和获取表单元素的值,例如input、textarea的值

               获取值  :   $(“#btn”). val () ;  

              设置值:$("txt "). val ("123");

              案例:[京东搜索] :  表单获得焦点,默认值清空,表单失去焦点,设置默认值

    <body>
    <input type="button" value="呵呵" id="btn">
    <input type="text" value="洋酒" id="txt">
    <script src="jquery-1.12.4.js"></script>
    <script>
      $(function () {
        $("#txt").focus(function () {
         
          if($(this).val() === "洋酒"){    //如果是默认值,清空内容
             $(this).val("");
    }
    });
    $(
    "#txt").blur(function () {
    if($(this).val() === ""){
    $(
    this).val("洋酒");
    }
    });
    });

    </script>
    </body>

      <20>html 方法 与 text 方法:

               html (): 相当于 innerHTML 

          text () :        相当于 innerText

               获取值:  $("div").html() 

               设置值 :  $("div").html("<p>我是文本<p>")    // 我是文本,

                              $("div").text("<p>我是文本</p>")    // <p>我是文本</p>

          区别: html方法会识别html标签,text方法会那内容直接当成字符串,并不会识别html标签。

    <21>width 方法与 height 方法

            获取宽度:    $("div").width()  , 直接获取到数字

            设置宽度:    $("div").width (400) 

            $("div").innerWidth() ;   // padding + width

            $("div").outerWidth()  ;   // padding + width +border

            $("div").outerWidth(true) ;  //padding+ width + border+margin

           获取页面可视区的宽度和高度:

           $(window).width()

           $(window).height()

    <21>scrollTop 与 scrollLeft

         设置或者获取垂直滚动条的位置
    scrollTop() : 被卷去的高度
    scrollLeft () : 被卷去的宽度
    $(window).scrollTop() ; 获取页面被卷去的高度
    $(window).scrollLeft(); 获取页面被卷去的宽度
    案例 : 固定导航条案例 + 小火箭返回顶部案例

    <22>offset方法与position方法:
    offset方法:获取元素距离document的位置 $("div"). offset();
    position方法:获取的是元素距离有定位的父元素的位置 $("div"). position();
    <23>jQuery事件发展历程:
    简单事件绑定 >> bind事件绑定 >>delegate事件绑定 >>on事件绑定
    简单事件注册:
    click() mouseenter() ....
    缺点:不能同时注册多个事件
    bind方式注册事件:
    $("p") . bind ("click mouseenter " , function(){} )
    第一个参数:事件类型
    第二个参数:事件处理程序
    缺点:不支持动态事件绑定(如新添加的元素没有绑定事件)
    delegate注册委托事件:
    $(".father").delegate("p" , "click" , function(){ } ) // 为.father下面的所有的p 标签绑定事件
    第一个参数:selector , 要绑定事件的元素
    第二个参数:事件类型:
    第三个参数:事件处理函数
    缺点:只能注册委托事件,一次注册事件需要记得方法太多了
    on 注册事件
    最现代的方式,兼容zepto(移动端类似jQuery的一个库),强烈建议使用
    语法:
    第一个参数:events , 绑定事件的名称可以是由空格分隔的多个事件(标准事件或自定义事件)
    第二个参数:selector,执行事件的后代元素(可选),如果没有后代元素,那么事件将由自己执行
    第三个参数:data , 传递给处理函数的数据,事件触发的时候通过event.data来使用(不常使用)
    第四个参数:hander:事件处理函数
    on注册简单事件:
    $("div") . on("click" , funciton(){ } ) //表示给div绑定代理事件,并且有自己触发,不支持动态绑定
    on注册委托事件:
    $("div").on("click" , "span" , function(){ } ) //表示给div绑定代理事件,但必须是它的内部元素span才能触发这个事件,支持动态绑定

    <24>事件解绑
    $("div").off() ; //解除匹配元素的所有事件
    $("div").off( "click") ; //解除匹配元素的所有 click事件
    <25>触发事件:
    $("div").click() ; //触发 click事件
    $("div").trigger("click");
    <26>delay的用法:
    $("div").fadeIn(1000).delay(2000).fadeOut(1000);
    <27>链式编程
    通常情况下,只有设置操作才能把链式编程延续下去,因为获取操作的时候,会返回获取到的相应的值,无法返回jQuery对象
    end( ) ; // 筛选选择器会改变jQuery 对象的DOM对象,想要恢复到上一次的状态,并且返回匹配元素之前的状态
    $(this).text("wjx-s").prevAll( ) .text("wjx-s").end( ).nextAll( ).text("wjx-k");
    <28>each方法
    jQuery的隐式迭代会对所有的DOM对象设置相同的值,但是如果我们需要给每一个对象设置不同的值的时候,就需要自己进行迭代了
    each方法 : 遍历jQuery对象集合 , 为每个匹配的元素执行一个函数
    $("div").each(function( index ,element){ })
    第一个参数 : 表示当前元素在所有匹配元素中的索引号
    第二个参数 : 表示当前元素 (DOM对象)
    案例 : 给每个 li 设置不同的透明度
    each方法
    $("li").each(function(index, element){
       $(element).css("opacity" , (index+1)/10) ;
    })
         for循环的方法
    for(var i=0; i < $("li").length; i++)
    {
        $("li").eq(i).css("opacity" , (i+1)/10);
    }

    <29>$冲突

         jQuery使用$作为标识符, 但是如果与其他框架中的 $ 冲突时, jQuery可以释放 $ 的控制权
    $.noConflict ( ) ; // jQuery释放控制权
    var $$=$.noConflict( ) ; //释放 $ 的控制权, 并且把 $ 的能力给了 $$
    入口函数 : $$(function(){ })

    <30>jQuery插件
    jquery不可能包含所有的功能,我们可以通过插件扩展jquery的功能。
    1,jQuery.color.js
      animate不支持颜色的渐变,但是使用了jquery.color.js后,就可以支持颜色的渐变了。
    
    
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
    div {
    400px;
    height: 400px;
    background-color: red;
    }
    </style>
    </head>
    <body>

    <div></div>

    <!--1. 引入jquery的js文件-->
    <script src="jquery-1.12.4.js"></script>
    <!--2. 引入插件的js文件-->
    <script src="jquery.color.js"></script>
    <script>
    $(function () {

    //3. 直接使用即可。
    //说明jquery不支持颜色的渐变,颜色最好用16进制
    $('div').animate({backgroundColor:"#ffc0cb"}, 3000, function () {
    alert("呵呵");
    });

    });
    </script>
    </body>
    </html>
    </script>
    使用插件的步骤:
    1,引入jQuery文件
    2,引入插件(如果有用到 css 的话,需要引入 css)
    3,使用插件

    2,jQuery.lazylode.js 懒加载插件
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
      <style>
        div {
          height: 4000px;
        }
      </style>
    </head>
    <body>
    <div></div>
    <img class="lazy" data-original="02.gif" alt="">
    
    <script src="jquery-1.12.4.js" type="text/javascript"></script>
    <script src="jquery.lazyload.js" type="text/javascript"></script>
    <script>
    
      $(function () {
    
        $("img.lazy").lazyload();
    
      });
    
    </script>
    </body>
    </html>

    制作jQuery插件

    原理:jQuery插件其实就是给jQuery对象增加一个新的方法,让jQuery对象拥有某一个功能

    通过给 $.fn添加方法就能够扩展jQuery对象

    <31> 原型的概念

             1,给数组原型增加一个 sayHi 的方法:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <script>
        Array.prototype.sayHi=function () {
            console.log("hello");
        };
        var arr = new Array();
        arr.sayHi();
    </script>
    </body>
    </html>

             2, jQuery 原型

            给 jQuery原型增加一个 sayHi () 方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <script src="jquery-1.12.4.js"></script>
    <script>
        $(function(){
            // 1, jQuery.prototype.sayHi=function () {
            //     console.log("hi");
            //    }
            //   jQuery(document).sayHi();  // jQuery对象调用这个方法
    
            // 2, $.prototype.sayHi=function () {
            //     console.log("hi");
            //     }
            //    $(document).sayHi();
    
            $.fn.sayHi =function () {
                console.log("hi");
            }
            $(document).sayHi();
        })
    
    </script>
    </body>
    </html>

    <32>制作一个简易的 jQuery 插件 (改变背景颜色)

            jQuery.bgColor.js 文件:

    $.fn.bgColor = function (color) {
         this.css("backgroundColor" , color);  // 原型对象的 this 指的就是 jQuery
         return this; // jQuery就可以链式编程
    }

           在HTML文件中使用这个插件:

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
      <style>
        div {
           200px;
          height: 200px;
          background-color: pink;
        }
      </style>
    </head>
    <body>
    <div></div> <p>1234</p> <script src="jquery-1.12.4.js"></script> <script src="jquery.bgColor.js"></script> <script> $(function () { $("p").bgColor("green"); $("div").bgColor("red").width(400); }); </script> </body> </html>



  • 相关阅读:
    获取一个目录下的所有文件 (转载)
    成为一个合格程序员的十三条原则(转载)
    VC消息机制总结
    域名是http和https都可以访问;但是http访问,就没法存储session:https就可以存储session
    扫描关注公众号(搜索公众号:码农编程进阶笔记),获取更多视频教程
    MySQL最常用分组聚合函数
    正确使用AWS S3的方式之打造自己的https图床
    消息队列 能做成 websocket 那样推送消息到客户端吗
    ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregate
    IT视频资源分享列表
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/11516877.html
Copyright © 2020-2023  润新知