• 前端基础之jquery


    知识预览

    • 一 jquery是什么?
    • 二 什么是jquery对象
    • 三 寻找元素(选择器和筛选器)
    • 四 操作元素(属性,CSS,文档处理)
    • 扩展方法(插件机制)
    • 实例练习

    一 jquery是什么?

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

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

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

    [4]  jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。

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

    二 什么是jquery对象?

    jquery对象是通过jquery包装DOM对象后产生的对象。jquery对象是jquery独有的,如果一个对象是jquery对象,那么他就可以使用jquery里的方法$("#test").html();

    $("#test").html()
         意思是:获取ID为test的元素内的HTML代码。其中HTML()是jquery里的方法。
         这段代码等同于DOM实现代码:document。getElementByID(“test”).innerHTML;
         虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法.乱使用会报错.
         约定:如果获取的是 jQuery 对象, 那么要在变量前面加上$. 
    
    var $variable = jQuery 对象
    var variable = DOM对象
    $variable[0]:jquery对象转为dom对象      $("#msg").html(); $("#msg")[0].innerHTML
    

     jquery的基础语法:$(selector).action()     

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

    3.1 选择器

    3.1.1 基本选择器      
    $("*")  $("#id")   $(".class")  $("element")  $(".class,p,div")
    
    3.1.2 层级选择器   
    $(".outer div")  $(".outer>div")   $(".outer+div")  $(".outer~div") 
    
    3.1.3 基本筛选器  
    $("li:first")  $("li:eq(2)")  $("li:even") $("li:gt(1)")
    
    3.1.4 属性选择器
    $('[id="div1"]')   $('["alex="sb"][id]')
    
    3.1.5 表单选择器      
    $("[type='text']")----->$(":text")         注意只适用于input标签  : $("input:checked")
    

    3.2 筛选器

    3.2.1 过滤筛选器

    $("li").eq(2)    $("li").first()   $("ul li").hasclass("test")
    

    3.2.2 查找筛选器

    查找子标签:     $("div").children(".test")子代       $("div").find(".test") 所有后代
    
    向下查找兄弟标签:$(".test").next()一个兄弟     $(".test").nextAll() 向下的所有兄弟
                              $(".test").nextUntil()
    
    向上查找兄弟标签:$("div").prev()一个         $("div").prevAll()向上的所有兄弟标签
                              $("div").prevUntil()
    
    查找所有的兄弟标签:$("div").siblings()
    
    查找父标签:$(".test").parent()一个父亲     $(".test").parents()所有父亲
                     $(".test").parentUntil()
    

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

    4.1 事件

    页面载入:

    ready(fn) //当DOM载入就绪可以查询及操作时绑定一个要执行的函数。
    $(document).ready(function(){})---------->$(function(){})
    

    事件绑定:

    语法:标签对象.事件(函数)
    $("p").click(function(){})
    

    事件委派:

    $("").on("事件",[selector],[data],fn)  //在选择元素上绑定一个或多个事件的事件处理函数。
    
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
    <hr>
    <button id="add_li">Add_li</button>
    <button id="off">off</button>
    
    <script src="jquery-3.2.1.js"></script>
    <script>
        
        $("ul").on("click","li",function(){
            alert(456);
        });
        $("#add_li").click(function(){
            var $ele=$("<li>");
            $ele.text(Math.round(Math.random()*10));
            $("ul").append($ele)
    
        });
    
         $("#off").click(function(){
             $("ul").off()
         })
    // 绑定的哪个标签就off哪个标签。 </script>

    事件切换:

    hover事件:

    一个模仿悬停事件(鼠标移动到一个对象上面及移除这个对象)的方法。这是一个自定义的方法,他为频繁使用的任务提供了一种“保持在其中”的状态。

    over:鼠标移到元素上要触发的函数

    out:鼠标移除元素要触发的函数

    $(".all").hover(function () {
            clearInterval(ID);
        },function () {
            ID = setInterval(loop,1500);
        });
    
    =====>等价于
    
    $(".all").mousehover(function(){
         clearInterval(ID);
    })
    
    $(".all").mouseleave(function(){
          ID=setInterval(loop,1500);
    })
    

    4.2 属性操作

    --------------------------class类
    $("").addClass([class|fn])
    $("").removeClass([class|fn])
    
    --------------------------属性
    $("").attr();
    $("").removeAttr();
    $("").prop();
    $("").removeProp();
    
    ------------------------HTML代码/文本/值
    $("").html([val|fn])
    $("").text([val|fn])
    $("").val([val|fn|arr])
    

    attr方法的使用:

    <input id="chk1" type="checkbox" />是否可见
    <input id="chk2" type="checkbox" checked="checked" />是否可见
    
    
    
    <script>
    
    //对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
    //对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
    //像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此
    //需要使用prop方法去操作才能获得正确的结果。
    
    
    //    $("#chk1").attr("checked")
    //    undefined
    //    $("#chk1").prop("checked")
    //    false
    
    //  ---------手动选中的时候attr()获得到没有意义的undefined-----------
    //    $("#chk1").attr("checked")
    //    undefined
    //    $("#chk1").prop("checked")
    //    true
    
        console.log($("#chk1").prop("checked"));//false
        console.log($("#chk2").prop("checked"));//true
        console.log($("#chk1").attr("checked"));//undefined
        console.log($("#chk2").attr("checked"));//checked
    </script>
    

    4.3 each循环

    我们知道,$("p").css("color","red") 是将css操作加到所有的标签上,内部维持一个循环;但如果对于选中标签进行不同处理,这时就需要对所有标签数组进行循环遍历啦。

    jquery支持两种循环方式:

    方式一:

    格式:$.each(obj,fn)

    li = [10,20,30,40];
    dic={name:"yuan",sex:"male"};
    $.each(li,function(i,x){
         console.log(i,x);
    })
    

    方式二:

    格式:$("").each(function(){
           console.log($(this).html());
    })
    

    其中,$(this)代指当前循环标签。

    each扩展:

    /*
            function f(){
    each扩展
    按 Ctrl+C 复制代码
    
            for(var i=0;i<4;i++){
    
                if (i==2){
                    return
                }
                console.log(i)
            }
    
        }
        f();  // 这个例子大家应该不会有问题吧!!!
    //-----------------------------------------------------------------------
    
    
        li=[11,22,33,44];
        $.each(li,function(i,v){
    
            if (v==33){
                    return ;   //  ===试一试 return false会怎样?
                }
                console.log(v)
        });
    
    //------------------------------------------
    
    
        // 大家再考虑: function里的return只是结束了当前的函数,并不会影响后面函数的执行
    
        //本来这样没问题,但因为我们的需求里有很多这样的情况:我们不管循环到第几个函数时,一旦return了,
        //希望后面的函数也不再执行了!基于此,jquery在$.each里又加了一步:
             for(var i in obj){
    
                 ret=func(i,obj[i]) ;
                 if(ret==false){
                     return ;
                 }
    
             }
        // 这样就很灵活了:
        // <1>如果你想return后下面循环函数继续执行,那么就直接写return或return true
        // <2>如果你不想return后下面循环函数继续执行,那么就直接写return false
    
    
    // ---------------------------------------------------------------------
    

    4.4 文档中节点处理

    //创建一个标签对象
        $("<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.5 动画效果

    显示与隐藏:show()   hide()  toggle()

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="jquery-2.1.4.min.js"></script>
        <script>
    
    $(document).ready(function() {
        $("#hide").click(function () {
            $("p").hide(1000);
        });
        $("#show").click(function () {
            $("p").show(1000);
        });
    
    //用于切换被选元素的 hide() 与 show() 方法。
        $("#toggle").click(function () {
            $("p").toggle();
        });
    })
    
        </script>
        <link type="text/css" rel="stylesheet" href="style.css">
    </head>
    <body>
    
    
        <p>hello</p>
        <button id="hide">隐藏</button>
        <button id="show">显示</button>
        <button id="toggle">切换</button>
    
    </body>
    </html>
    复制代码
    View Code

    滑动:slideDown()隐藏   slideUp()显示    slideToggle()

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="jquery-2.1.4.min.js"></script>
        <script>
        $(document).ready(function(){
         $("#slideDown").click(function(){
             $("#content").slideDown(1000);
         });
          $("#slideUp").click(function(){
             $("#content").slideUp(1000);
         });
          $("#slideToggle").click(function(){
             $("#content").slideToggle(1000);
         })
      });
        </script>
        <style>
    
            #content{
                text-align: center;
                background-color: lightblue;
                border:solid 1px red;
                display: none;
                padding: 50px;
            }
        </style>
    </head>
    <body>
    
        <div id="slideDown">出现</div>
        <div id="slideUp">隐藏</div>
        <div id="slideToggle">toggle</div>
    
        <div id="content">helloworld</div>
    
    </body>
    </html>
    复制代码
    View Code

    淡入淡出:fadeIn()显示   fadeOut()隐藏   fadeToggle()

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="jquery-2.1.4.min.js"></script>
        <script>
        $(document).ready(function(){
       $("#in").click(function(){
           $("#id1").fadeIn(1000);
    
    
       });
        $("#out").click(function(){
           $("#id1").fadeOut(1000);
    
       });
        $("#toggle").click(function(){
           $("#id1").fadeToggle(1000);
    
    
       });
        $("#fadeto").click(function(){
           $("#id1").fadeTo(1000,0.4);
    
       });
    });
    
    
    
        </script>
    
    </head>
    <body>
          <button id="in">fadein</button>
          <button id="out">fadeout</button>
          <button id="toggle">fadetoggle</button>
          <button id="fadeto">fadeto</button>
    
          <div id="id1" style="display:none;  80px;height: 80px;background-color: blueviolet"></div>
    
    </body>
    </html>
    复制代码
    View Code

    4.6 CSS操作

    css位置操作

    $("").offset()    可以取到标签在Windows窗口中的位置。
    
    $("").position()   参考对象是已定位的父亲
    
    $("").scrollTop()  方法返回或设置匹配元素的滚动条的垂直位置。
          $("").scrollTop(0)  返回到顶部
          没有参数时,返回当前滚动条的位置
          有参数时,意思是设置滚动条的位置
    
    $("").scrollLeft()   返回或设置匹配元素的滚动条的水平位置。
           滚动条的水平位置指的是从其左侧滚动过的像素数,当滚动条位于最左侧时,位置是0.
           没有参数:返回第一个匹配元素的水平滚动条位置。
           有参数   :设置所有匹配元素的水平滚动条位置。
    

    示例1:

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .test1{
                 200px;
                height: 200px;
                background-color: wheat;
            }
        </style>
    </head>
    <body>
    
    
    <h1>this is offset</h1>
    <div class="test1"></div>
    <p></p>
    <button>change</button>
    </body>
    <script src="jquery-3.1.1.js"></script>
    <script>
        var $offset=$(".test1").offset();
        var lefts=$offset.left;
        var tops=$offset.top;
    
        $("p").text("Top:"+tops+" Left:"+lefts);
        $("button").click(function(){
    
            $(".test1").offset({left:200,top:400})
        })
    </script>
    </html>
    复制代码
    View Code

    示例2:

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
            }
            .box1{
                 200px;
                height: 200px;
                background-color: rebeccapurple;
            }
            .box2{
                 200px;
                height: 200px;
                background-color: darkcyan;
            }
            .parent_box{
                 position: relative;
            }
        </style>
    </head>
    <body>
    
    
    
    
    <div class="box1"></div>
    <div class="parent_box">
        <div class="box2"></div>
    </div>
    <p></p>
    
    
    <script src="jquery-3.1.1.js"></script>
    <script>
        var $position=$(".box2").position();
        var $left=$position.left;
        var $top=$position.top;
    
        $("p").text("TOP:"+$top+"LEFT"+$left)
    </script>
    </body>
    </html>
    复制代码
    View Code

    示例3:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .box{
                width: 100%;
                height: 2000px;
                background-color: wheat;
            }
    
            #returnTop{
                width: 70px;
                height: 40px;
                background-color: #2459a2;
                color: white;
                font-weight: 800;
                text-align: center;
                line-height: 40px;
                position: fixed;
                bottom: 20px;
                right: 20px;
                display: none;
            }
        </style>
        <script src='../day48/jquery-3.2.1.js'></script>
    </head>
    <body>
    
    
    <div class="box"></div>
    
    <div id="returnTop">TOP</div>
    <script>
        $(window).scroll(function () {
    
            console.log($(window).scrollTop());
            if($(window).scrollTop()>200){
                $("#returnTop").show();
    
            }
            else {
                $("#returnTop").hide();
            }
        });
    
    
        $("#returnTop").click(function () {
            $(window).scrollTop(0)
        })
    </script>
    </body>
    </html>
    View Code

    尺寸操作:

    文本的高度和宽度:   
            $("").height([val|fn])
            $("").width([val|fn])
    加padding后的高度和宽度:
            $("").innerHeight()
            $("").innerWidth()
    加border后的高度和宽度:
            $("").outerHeight([soptions])
            $("").outerWidth([options])
    加margin后的高度和宽度:
            $("").outerHeight(true)
            $("").outerWidth(true)
    

    示例:

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
            }
            .box1{
                 200px;
                height: 200px;
                background-color: wheat;
                padding: 50px;
                border: 50px solid rebeccapurple;
                margin: 50px;
            }
    
        </style>
    </head>
    <body>
    
    
    
    
    <div class="box1">
        DIVDIDVIDIV
    </div>
    
    
    <p></p>
    
    <script src="jquery-3.1.1.js"></script>
    <script>
        var $height=$(".box1").height();
        var $innerHeight=$(".box1").innerHeight();
        var $outerHeight=$(".box1").outerHeight();
        var $margin=$(".box1").outerHeight(true);
    
        $("p").text($height+"---"+$innerHeight+"-----"+$outerHeight+"-------"+$margin)
    </script>
    </body>
    </html>
    复制代码
    View Code
     
  • 相关阅读:
    软件工程问题清单
    问题清单
    2020软件工程3作业
    2020软件工程作业02
    2020软件工程作业01
    2020软件工程个人作业06——软件工程实践总结作业
    2020软件工程作业03
    2020软件工程作业05
    软件工程作业 疑问总结
    2020软件工程作业04
  • 原文地址:https://www.cnblogs.com/guomeina/p/7358959.html
Copyright © 2020-2023  润新知