zoukankan      html  css  js  c++  java
  • 开始学习jQuery

    一 jQuery是什么? 

              1、 jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team

              2、jQuery是继prototype之后又一个优秀的Javascript框架。其宗旨是——WRITE LESS,DO MORE!

              3、它是轻量级的js(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器

                   (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。

              4、jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documentsevents、实现

                     动画效果,并且方便地为网站提供AJAX交互。非常好用

              <5>jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件

                    可供选择。

    通俗讲,就是封装了JavaScript,使写JavaScript代码更加简洁,高效,解决了兼容问题。变成了非常好用的调用接口。但是使用之前一定要先加载jQuery的模块代码!

    二 什么是jQuery对象?

    jQuery 对象就是通过jQuery包装DOM对象后产生的对象。jQuery 对象是 jQuery 独有的如果一个对象是 jQuery 对象那么它就可以使用 jQuery 里的方法: $(“#test”).html();而且约定俗成的,在其前面加上$符号

    var $variable = jQuery 对象 //这个是jQuery的对象声明
    var variable = DOM 对象  //这个是DOM对象的声明

    三 寻找元素(选择器和筛选器)

    1、选择器,就是寻找某个元素

    1.1 基本选择器:跟CSS样式差不多很好学,注意加上双引号

    $("*") : 就是选择到所有的元素呗,一般是全体元素设置公共属性设置

    $("#id") : 根据id找到某一标签,id是唯一的,所以找到的也是唯一的

    $(".class") : 根据class属性找到相应的标签

    $(".class,p,div") : 多内容查找,是或的关系

    1.2 层级选择器:层层选择的意思,这层选择还要下一层选择,跟北影的复试差不多

    $(".outer div")  .outer的子孙后代中的div

    $(".outer>div")  .outer子代的儿子代的div

    $(".outer+div") .outer紧随的兄弟div(后面一个)

    $(".outer~div")  .outer后面的所有的div兄弟

    1.3 属性选择器 :根据某些属性找到某些标签

    $('[id="div1"]') :id不建议这么写

    $('[zhiwei="qunzhu"]') :一般都是自定义的属性才会这么查找

    $("#updatemagic option[value='"+ list[4] +"']") 当属性的值有变量时,需要用到字符串标签

    1.4表单选择器:

    $(":input") 所有 <input> 元素
    :text $(":text") 所有 type="text" 的 <input> 元素
    :password $(":password") 所有 type="password" 的 <input> 元素
    :radio $(":radio") 所有 type="radio" 的 <input> 元素
    :checkbox $(":checkbox") 所有 type="checkbox" 的 <input> 元素
    :submit $(":submit") 所有 type="submit" 的 <input> 元素
    :reset $(":reset") 所有 type="reset" 的 <input> 元素
    :button $(":button") 所有 type="button" 的 <input> 元素
    :image $(":image") 所有 type="image" 的 <input> 元素
    :file $(":file") 所有 type="file" 的 <input> 元素

    2、筛选器,就是找到之后再做筛选

    2.1 过滤筛选器 

    $("li").eq(2) : 找到一堆li,然后取第三个,因为是从0开始的

    $("li").first() : 找到一堆li,然后取第一个,也就是.eq(0)

    $("li").last() : 找到一堆li,然后取最后一个

    $("ul li").hasclass("test") 找到一堆li,然后看谁的class里面有test

    2.2 查找筛选器

    $("div").children(".test") : 找到所有儿子代中class带有test的
    $("div").find(".test") : 找到所有子孙中class带test的
    $(".test").next() 紧随的兄弟(后面一个)
    $(".test").nextAll() 紧跟的所有兄弟们(后面的所有)
    $(".test").nextUntil() 紧跟的兄弟直到。。。

    $("div").prev() : 前面的。。。
    $("div").prevAll() :前面的
    $("div").prevUntil() :前。。。

    $(".test").parent() :.test的父对象
    $(".test").parents() :.test的父亲,爷爷。。。直到标签的尽头
    $(".test").parentUntil() :.test的父亲,爷爷。。。直到某个条件

    $("div").siblings() : div的兄弟姐妹们

    四 操作元素(属性,css,文档处理)

    4.1 属性操作

    -------------------------属性----------
    $("").attr(); $("").removeAttr();
    $("").prop(); $("").removeProp();
    //对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
    //对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
    //像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此
    //需要使用prop方法去操作才能获得正确的结果。
    --------------------------CSS类
    $("").addClass(class|fn) :给class属性的加个值 $("").removeClass([class|fn]):删除class属性的某个值

    --------------------------HTML代码/文本/值 $("").html([val|fn]) $("").text([val|fn]) $("").val([val|fn|arr]) --------------------------- $("").css("color","red")

     4.2 文档处理:增删改复制标签

    /创建一个标签对象
        $("<p>")
    
    
    //内部插入
    
        $("").append(content|fn)      ----->$("p").append("<b>Hello</b>");
        $("").appendTo(content)       ----->$("p").appendTo("div");
        $("").prepend(content|fn)     ----->$("p").prepend("<b>Hello</b>");
        $("").prependTo(content)      ----->$("p").prependTo("#foo");
    
    //外部插入
    
        $("").after(content|fn)       ----->$("p").after("<b>Hello</b>");
        $("").before(content|fn)      ----->$("p").before("<b>Hello</b>");
        $("").insertAfter(content)    ----->$("p").insertAfter("#foo");
        $("").insertBefore(content)   ----->$("p").insertBefore("#foo");
    
    //替换
        $("").replaceWith(content|fn) ----->$("p").replaceWith("<b>Paragraph. </b>");
    
    //删除
    
        $("").empty()
        $("").remove([expr])
    
    //复制
    
        $("").clone([Even[,deepEven]])

    4.3 单独说说CSS样式操作
    CSS
            $("").css(name|pro|[,val|fn])
        位置
            $("").offset([coordinates])
            $("").position()
            $("").scrollTop([val])
            $("").scrollLeft([val])
        尺寸
            $("").height([val|fn])
            $("").width([val|fn])
            $("").innerHeight()
            $("").innerWidth()
            $("").outerHeight([soptions])
            $("").outerWidth([options])

    五 事件

    1、页面载入

    $(document).ready(function(){}) -----------> $(function(){})
    

     两个是等效的,后面的是缩写

    2、事件处理

    $("").on(eve,[selector],[data],fn)  // 在选择元素上绑定一个或多个事件的事件处理函数。
     好处在于.on方法为动态添加的元素也能绑上指定事件;新增加的标签也会有相应的方法哟、

    其他常用的方法比如onMouseover,onClick....在jQuery之需要去掉on就可以很方便的使用了

    3、一些动画效果:括号里面一般都是ms,表示完成需要多长时间

    1、显示和隐藏

    $("p").hide(1000); 隐藏
    $("p").show(1000); 显示
    $("p").toggle(1000); 点一下隐藏再点一下显示,切换的作用,相当于开关
    2、滑动
    $("#content").slideDown(1000);向下滑动
    $("#content").slideUp(1000);向上滑动
    $("#content").slideToggle(1000);滑动切换
    3、淡入淡出
     $("#id1").fadeIn(1000);
    $("#id1").fadeToggle(1000);
    $("#id1").fadeIn(1000);

    $("#id1").fadeTo(1000,0.4);淡到指定的透明度

    4、回调函数

    函数完成后调用某个指定的函数
           $("p").hide(1000,function(){
               alert($(this).html())
           })
    

    七 扩展方法 (插件机制):也就是自定义jQuery方法

    $.extend(object)      //为JQuery 添加一个静态方法。
    $.fn.extend(object)   //为JQuery实例添加一个方法。
        jQuery.extend({
              min: function(a, b) { return a < b ? a : b; },
              max: function(a, b) { return a > b ? a : b; }
            });
        console.log($.min(3,4));
    
    //-----------------------------------------------------------------------$.fn.extend({
        "print":function(){
    for (var i=0;i<this.length;i++){
    console.log($(this)[i].innerHTML)
    }

    }
    });

    八 jQuery的实例应用

    1、jQuery轮播图:请先找五张大小一致的图片命名为1.jpg .....

     

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>Title</title>
      6 </head>
      7 <style>
      8     * {
      9         margin: 0;
     10         padding: 0;
     11     }
     12 
     13     .outer {
     14         width: 670px;
     15         height: 360px;
     16         margin: 100px auto;
     17         position: relative;
     18         overflow: hidden;
     19     }
     20 
     21     ul, li {
     22         list-style: none;
     23         display: inline-block;
     24         float: left;
     25     }
     26 
     27     .btn {
     28         /*position: relative;*/
     29         height: 50px;
     30         width: 39px;
     31         
     32         top: 150px;
     33         cursor: pointer;
     34     }
     35 
     36     .left-btn {
     37         position: absolute;
     38         background: url("left-arrow-small.png");
     39         left: 0px;
     40 
     41     }
     42     .right-btn{
     43         position: absolute;
     44         background: url("right-arrow-small.png");
     45         right: 0px;
     46 
     47 
     48     }
     49     .bottom{
     50         position: absolute;
     51         background-color: hsla(0,0%,100%,.3);
     52         bottom: 20px;
     53         left: 260px;
     54         height: 20px;
     55         width: 180px;
     56         /*border: 1px solid red ;*/
     57         border-radius: 12px;
     58         line-height: 20px;
     59         padding-top: 4px;
     60     }
     61     .bottom li{
     62         display: inline-block;
     63         margin-right: 12px;
     64         margin-left: 12px;
     65         margin-top: 3px;
     66         width: 12px;
     67         height: 12px;
     68         border-radius: 100%;
     69         background-color: white;
     70         text-align: center;
     71     }
     72     .bottom ul li.current-point{
     73         background-color: red;
     74     }
     75     .hide{
     76         display: none;
     77     }
     78 
     79 
     80 </style>
     81 <script src="jquery-3.1.1.js"></script>
     82 <script>
     83     $(function () {
     84 
     85     })
     86 </script>
     87 <body>
     88 <div class="outer">
     89     <ul class="imgs">
     90         <li class="img current"><a href=""><img src="1.jpg" alt="" ></a></li>
     91         <li class="img"><a href="" ><img src="2.jpg" alt="" ></a></li>
     92         <li class="img"><a href="" ><img src="3.jpg" alt=""></a></li>
     93         <li class="img"><a href="" ><img src="4.jpg" alt=""></a></li>
     94         <li class="img"><a href="" ><img src="5.jpg" alt=""></a></li>
     95     </ul>
     96     <div class="left-btn btn hide"></div>
     97     <div class="right-btn btn hide"></div>
     98 
     99     <div class="bottom hide">
    100         <ul>
    101             <li class="bottom-slider current-point" id="0"></li>
    102             <li class="bottom-slider" id="1"></li>
    103             <li class="bottom-slider" id="2"></li>
    104             <li class="bottom-slider" id="3"></li>
    105             <li class="bottom-slider" id="4"></li>
    106         </ul>
    107     </div>
    108 </div>
    109 <script>
    110     //定义计时器
    111     var index = 0
    112     var timer = setInterval(run,2000)
    113 
    114     function run() {
    115         index++;
    116         var $imgs = $(".outer ul.imgs li")
    117 //        console.log(index)
    118         if (index >= $imgs.length) {
    119             index=0;
    120         }
    121 
    122         changeimg(index)
    123     }
    124 
    125     //定义切换至第index张图片的函数
    126     function changeimg(index) {
    127 //        console.log(index)
    128         $(".outer ul li.current").fadeOut(500).removeClass("current")
    129         $(".bottom ul li.current-point").removeClass("current-point")
    130         $(".bottom ul li.bottom-slider").eq(index).addClass("current-point")
    131         $(".outer ul.imgs li").eq(index).fadeIn(500).addClass("current")
    132 
    133 //        console.log($(".outer ul.imgs li").eq(index))
    134     }
    135 
    136     //当鼠标移至outer区域,停止轮播
    137     $(".outer").mouseover(function () {
    138         clearInterval(timer);
    139         $(".left-btn,.right-btn,.bottom").removeClass("hide")
    140 
    141     })
    142 
    143     //当鼠标移除outer区域,继续进行轮播
    144     $(".outer").mouseout(function () {
    145         timer = setInterval(run,2000)
    146         $(".left-btn,.right-btn,.bottom").addClass("hide")
    147     })
    148 
    149     //当鼠标点击向左的箭头,向前切换
    150     $(".left-btn").click(function () {
    151         if (index == 0) {
    152             index = $(".outer ul.imgs li").length-1
    153         }else {
    154             index--
    155         }
    156 
    157         changeimg(index)
    158     })
    159     //当鼠标点击向右的箭头,向后切换
    160     $(".right-btn").click(function () {
    161         if (index == ($(".outer ul.imgs li").length-1)) {
    162             index = 0
    163         }else {
    164             index++
    165         }
    166 
    167         changeimg(index)
    168     })
    169 
    170     //bottom切换
    171     var $num = $(".bottom ul li")
    172 //    console.log($num.length)
    173 //    for (var i=0;i< $num.length;i++){
    174 //        console.log($num[i])
    175 //        console.log($num[i].id)
    176         $num.click(function () {
    177             console.log(this.id)
    178             changeimg(this.id)
    179         })
    180 
    181 //    }
    182   //  for (var )
    183 </script>
    184 
    185 </body>
    186 </html>
    jQuery轮播图

    2、jQuery之面板拖动

    鼠标位置:

    pageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化。可以理解为:相对#(0.0)坐标绝对定位
    clientX:鼠标在页面上可视区域的位置,从浏览器可视区域左上角开始,即是以浏览器滑动条此刻的滑动到的位置为参考点,随滑动条移动 而变化。可以理解为:相对可视化左上角坐标绝对定位

    offsetX:IE特有,鼠标相比较于触发事件的元素的位置,以元素盒子模型的内容区域的左上角为参考点,如果有boder,可能出现负值

    layerX:FF特有,鼠标相比较于当前坐标系的位置,即如果触发元素没有设置绝对定位或相对定位,以页面为参考点,如果有,将改变参考坐标系,从触发元素盒子模型的border区域的左上角为参考点
    也就是当触发元素设置了相对或者绝对定位后,layerX和offsetX就幸福地生活在一起^-^,几乎相等,唯一不同就是一个从border为参考点,一个以内容为参考点

    对象位置:

    position()获取相对于它最近的具有相对位置(position:relative或position:absolute)的父级元素的距离,如果找不到这样的元素,则返回相对于浏览器的距离。
    offset()始终返回相对于浏览器文档的距离,它会忽略外层元素

     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title></title>
     6 </head>
     7 <body>
     8     <div class="model" style="border: 1px solid #ddd; 600px;position: absolute;">
     9         <div class="title" style="background-color: black;height: 40px;color: white;">
    10             标题
    11         </div>
    12         <div style="height: 300px;" class="content">
    13             内容
    14         </div>
    15     </div>
    16 <script type="text/javascript" src="jquery-3.1.1.js"></script>
    17 <script>
    18     $(function () {
    19         //内容加载完自动执行下面代码
    20         $(".title").mouseover(function () {
    21             //移至标题区域鼠标变成move样式
    22             $(this).css('cursor','move')
    23         }).mousedown(function (e) {
    24             //clientX和clientY都是鼠标的坐标
    25             var mouse_origin_x  = e.clientX;
    26             var mouse_origin_y  = e.clientY;
    27 
    28             //model对象在窗口的位置,用offset取元素的
    29             var model_x = $(this).parent().offset().left;
    30             var model_y = $(this).parent().offset().top;
    31 //            console.log($(this).parent())
    32 //            console.log(model_y)
    33 //            console.log(model_x)
    34 
    35             $(this).bind("mousemove",function (e) {
    36                 var mouse_dest_x = e.clientX;
    37                 var mouse_dest_y = e.clientY;
    38 
    39                 var model_dest_x = model_x + mouse_dest_x-mouse_origin_x;
    40                 var model_dest_y = model_y + mouse_dest_y-mouse_origin_y;
    41                 $(this).parent().css("left",model_dest_x)
    42                 $(this).parent().css("top",model_dest_y)
    43 
    44 
    45             })
    46         }).mouseup(function () {
    47             $(this).unbind("mousemove")
    48         })
    49         
    50         
    51         
    52     })
    53 </script>
    54 </body>
    55 </html>
    View Code

     3、jQuery的放大镜

    请先找两张图片,一大一小

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>Title</title>
      6     <style>
      7         * {
      8             padding: 0;
      9             margin: 0;
     10         }
     11 
     12         .outer .small_box {
     13             position: relative;
     14             height: 400px;
     15             width: 400px;
     16             border: solid 2px red;
     17             overflow: hidden;
     18         }
     19 
     20         .outer .small_box .float {
     21             height: 200px;
     22             width: 200px;
     23             background-color: darkgrey;
     24             opacity: 0.5;
     25             position: absolute;
     26 
     27         }
     28 
     29         .outer .big_box {
     30             height: 400px;
     31             width: 400px;
     32             overflow: hidden;
     33             position: absolute;
     34             left: 410px;
     35             top: 0px;
     36             z-index: 1;
     37             border: 2px solid rebeccapurple;
     38 
     39         }
     40 
     41         .outer .big_box img {
     42             position: absolute;
     43             z-index: 5;
     44         }
     45 
     46         .hide {
     47             display: none;
     48         }
     49 
     50 
     51     </style>
     52 </head>
     53 <body>
     54 <div class="outer">
     55     <div class="small_box">
     56         <div class="float hide"></div>
     57         <img src="small.png" alt="">
     58     </div>
     59     <div class="big_box hide"><img src="big.jpg" alt=""></div>
     60 </div>
     61 
     62 
     63 <script src="jquery-3.1.1.js"></script>
     64 <script>
     65     $(function () {
     66         $(".small_box").mouseover(function () {
     67             $(".float,.big_box").removeClass("hide");
     68 
     69         });
     70         $(".small_box").mouseout(function () {
     71             $(".float").addClass("hide")
     72             $(".big_box").addClass("hide")
     73         });
     74         $(".small_box").mousemove(function (e) {
     75 
     76             //找到一大堆的距离
     77             var float_width = $(".float").width();
     78             var float_height = $(".float").height();
     79 //        console.log(float_height,float_width)
     80             var float_height_half = float_height / 2;
     81             var float_width_half = float_width / 2;
     82             var small_box_width = $(".small_box").width()
     83             var small_box_height = $(".small_box").height()
     84 
     85             var float_position_x = (e.clientX - float_height_half) < 0 ? 0 : (e.clientX - float_height_half)
     86             var float_position_y = (e.clientY - float_width_half) < 0 ? 0 : (e.clientY - float_width_half)
     87             if (float_position_x > float_width ) {
     88                 float_position_x = float_width;
     89 
     90             }
     91             if (float_position_y > float_height) {
     92                 float_position_y = float_height;
     93             }
     94             $(".float").css("left", float_position_x + "px")
     95             $(".float").css("top", float_position_y + "px")
     96 
     97             var img_width = $(".big_box img").width();
     98             var img_height = $(".big_box img").height();
     99             var bigbox_width = $(".big_box").width()
    100             var a = small_box_width-float_width;
    101             var percentX = ($(".big_box img").width() -$(".big_box").width())/(small_box_width-float_width)
    102             var percentY = ($(".big_box img").height() -$(".big_box").height())/(small_box_height-float_height)
    103 
    104             $(".big_box img").css("left", -percentX*float_position_x+"px")
    105             $(".big_box img").css("top", -percentY*float_position_y+"px")
    106 
    107 
    108         })
    109     })
    110 
    111 </script>
    112 </body>
    113 </html>
    jQuery的放大镜效果

    参考:

    http://www.cnblogs.com/jicheng/p/5945057.html

     http://www.cnblogs.com/yuanchenqi/articles/6070667.html

     


  • 相关阅读:
    魔术方法详解、魔术变量、预定义常量、预定义变量
    RabbitMQ:生产者消费者模型构建/为消息自定义属性/自定义消费者
    RabbitMQ:相关概念
    RabbitMQ:基于centos7安装
    Spring Boot:整合Dubbo
    Dubbo:服务提供者、消费者相关配置
    Dubbo:Dubbo Admin环境搭建
    Zookeeper:Curator Watcher机制和事务控制
    Zookeeper:Curator增删改查API
    Zookeeper:集群和zab协议
  • 原文地址:https://www.cnblogs.com/skiler/p/6414864.html
Copyright © 2011-2022 走看看