zoukankan      html  css  js  c++  java
  • jQuery从0到1

    jQuery不需要安装,把下载的jquery.js文件放在网站上的一个公共的位置,需要在某个页面使用jQuery时,再相对引用即可。——其中有压缩版和未压缩版,分别用于开发和发布。http://jquery.com/

    使用微软或谷歌等CDN的好处是:

    1. 用户在访问其他网站时,很多时候都已经从谷歌、微软加载过jQuery。如果是这样,那么用户再访问自己的网站时,就会从缓存中调用jQuery——减少了加载时间。
    2. 大多数CDN都能确保加载jQuery,从最近的服务器上加载——提高加载速度(不管有没有第一种情况,都可以提高速度)。

    jQuery的引用:

    <head>
        <!-- 例如 -->
        <script src="../scripts/jquery-3.1.1.js" type="text/javascript"></script>
    </head>

    在jQuery库中,会创建一个名为jQuery的对象,其别名为$。

    JavaScript中window.onload和jQuery中$(document).ready()的区别:

    • $(document).ready(function(){函数体});——绘制完DOM后,就执行,不必等待DOM元素关联的资源加载完。
    • window.onload = function(){函数体};——必须等待网页中,所有内容加载完毕后,才能执行。所以这个方法只会执行最后一个,而前者可以依次执行多个。

    $(document).ready(function)的简写:

    // $() 等效于 $(document).ready(),接收一个 function 参数
    $(function () { alert("等效于$(document).ready(function () {};"); });

    选择器:

    jQuery使用CSS的选择器来操纵HTML元素(DOM):选择器函数$()+CSS选择器 —— $("CSS选择器")。

    JQuery对象与JavaScript对象的转换:

    //DOM转jQuery对象
    var txtName = document.getElementById("txtName");
    var $txtName = $(txtName);   //jQuery对象
    //jQuery转DOM对象
    var $txtName = $("#txtName");      //jQuery对象
    var txtName = $txtName[0];            //DOM对象
    //或者var txtName = $txtName.get(0);       //DOM对象

    jQuery特有的选择器:

    $('a:first') //选择网页中第一个a元素
    $('tr:odd') //选择表格的奇数行
    $('#myForm :input') // 选择表单中的input元素
    $('div:visible') //选择可见的div元素
    $('div:gt(2)') // 选择所有的div元素,除了前三个
    $('div:animated') // 选择当前处于动画状态的div元素

    在JS中,如果页面中不存在”test”这个id,var d = document.getElementById("test")语句将会返回null,即对象d为null——此时再对这个对象进行操作,浏览器将会生成错误,而jQuery选择器则不会报错。

    显示、隐藏

    <p id="p1">段落1</p>
    <button id="b1">hide</button>
    <button id="b2">show</button>
    <script>
        $(document).ready(function () {
            $("#b1").click(function () {
                $("p").hide();      //隐藏后的效果就跟删除了一样,不会继续占位置:转换成样式 —— style="display: none;"
            });
            $("#b2").click(function () {
                $("p").show();
            });
        });
    </script>

    使用带参数的hide、show:

    <button>隐藏</button>
    <p>这是一个段落。</p>
    <p>这是另一个段落。</p>
    <script>
        //$(selector).hide(speed, callback);$(selector).show(speed, callback);
        //二者皆可选。speed 规定隐藏/显示的速度,可以取以下值:"slow"、"fast"、"normal" 或毫秒。
        // callback 是隐藏或显示完成后所执行的函数名称。此参数除了达到某种效果之外,还可以避免动画还未完成时,JS导致的页面冲突、错误等。
        $(document).ready(function () {
            $("button").click(function () {
                $("p").hide(1000, function () {
                    alert("hello");     //这里要弹出两次:因为有两个p,隐藏两次
                });
            });
        });
    </script>

    使用toggle切换隐藏hide、显示show的状态:

    <button>切换键</button>
    <p>这是一个段落。</p>
    <p>这是另一个段落。</p>
    <script>
        $(document).ready(function () {
            $("button").click(function () {
                //和hide、show的用法一样
                $("p").toggle(1000);
            });
        });
    </script>

    淡入淡出效果:

    <button class="show">fadeIn</button>
    <button class="hide">fadeOut</button>
    <button class="toggle">fadeToggle</button>
    <button class="fadeTo">fadeTo</button>
    <p>这是一个段落。</p>
    <p>这是另一个段落。</p>
    <script>
        $(document).ready(function () {
            //元素显示、隐藏淡入淡出:fadeIn、fadeOut、fadeToggle与hide、show的参数相同,但fadeTo多一个参数
            $(".hide").click(function () {
                $("p").fadeOut("slow");
            });
            $(".show").click(function () {
                $("p").fadeIn("slow");
            });
            $(".toggle").click(function () {
                $("p").fadeToggle("slow");
            });
            $(".fadeTo").click(function () {
                // $(selector).fadeTo(speed, opacity, callback);
           // opacity:不透明度(透明0 — 不透明1),透明度为0与hide不一样,opacity=0会占位置、默认opacity=1,所以opacity不设置就没有丁点儿hide效果;其他两个参数和hide一样
    $("p").fadeTo("slow", 0.5); }); }); </script>

    滑动效果:

    <button>滑呀滑</button>
    <div class="box">
        <p>hello</p>
        <p>world</p>
    </div>
    <script>
        $(document).ready(function () {
            $("button").click(function () {
                //slideDown、slideUp、slideToggle的参数和hide一样(没有opacity参数)
                $(".box").slideToggle("slow");
            });
        });
    </script>

    自定义动画效果:

    <button>动画帝君</button>
    <div>
        <p>段落一</p>
        <p>段落二</p>
    </div>
    <style>
        div{
            /*默认情况,所有HTML元素的位置都是静态的,所以无法移动。*/
            /*因此要想移动一个元素,首先要把元素的position属性设置为absolute、fixed、relative */
            position: absolute;
            background-color: red;
        }
    </style>
    <script>
        $(document).ready(function () {
            $("button").click(function () {
                //$(selector).animate({ params}, speed, callback); 参数1:操纵几乎所有CSS属性
                //但是所有的属性必须采用Camel写法,如不能用"padding-left",而是"paddingLeft"
                //而且色彩动画不在核心jQuery库中:如果要使用颜色动画,必须从jQuery.com下载Color Animations 插件
                $("div").animate({
                    //position属性的值,是相对于原来位置的偏移量
                    right: '250px'
                });
                //再来一个:形成动画队列,依次调用
                $("div").animate({
                    left: '250px',
                    opacity: "0.5",
                    height: '+=50px',   //使用相对值:每一次都相对于当前(不是原来的)位置
                     "toggle"     //show、hide —— toggle
                });
            });
        });
    </script>

    停止动画stop:

    <button class="b1">动画帝君</button>
    <button class="b2">stop</button>
    <div>
        <p>段落一</p>
        <p>段落二</p>
    </div>
    <script>
        $(document).ready(function () {
            $(".b1").click(function () {
                $("div").slideToggle(5000);
                $("div").fadeOut(5000);
            });
            $(".b2").click(function () {
                //$(selector).stop(stopAll, goToEnd);在jQuery效果结束之前,将其停止
                //stopAll:是否清除所有动画队列。默认是false,即仅清除当前动画,队列后面的动画继续执行
                //goToEnd:是否立即完成操作(动画:操作+效果)。默认是false。
                $("div").stop(true, false);
            });
        });
    </script>

    方法链接(chaining):

    通常也称作链式操作:由于jQuery的方法都是返回对象自身,所以可以在一条语句上,隐式迭代执行多个函数(链式)。

    $("#p1").css("color","red").slideUp(2000).slideDown(2000);

    DOM操作:

    <p class="p1"><b>测试文本</b></p>
    <p class="p2"></p>
    <input type="text" class="p3" />
    <button>显示值</button>
    <script>
        $(document).ready(function () {
            //text() - 设置或返回所选元素的文本内容(只有文本,设置、返回都会当作纯文本,面向页面输出)
            alert($(".p1").text("<b>hello</b>").text());    //设置返回的是this,空参数返回的是String
            //html() - 设置或返回所选元素的内容(包括 HTML 标记,面向HTML源代码)
            alert($(".p2").html("<b>hello</b>").html());
            //获取或设置 input 输入框的输入
            $("button").click(function () {
                alert($(".p3").val(125454).val());
            });
        });
    </script>

    设置/获取DOM属性:

    <a href="http://www.qunyh.cn">群影汇影视平台</a>
    <a class="a1">群影汇</a>
    <script>
        $(document).ready(function () {
            $("a").attr("href", "http://www.baidu.com");
            alert($("a").attr("href"));
            //设置多个属性
            $(".a1").attr({
                "href": "http://www.qunyh.cn",
                "title": "群影汇-影视戏曲特色文化产业公共服务平台-平台首页"
            });
        });
    </script>

    利用DOM添加新的文本/HTML:

    <ol>
        <li>Item one</li>
    </ol>
    <p class="p1">段落1</p>
    <script>
        //追加新文本/HTML的方法有:innerHTML、jQuery、JavaScript DOM
        //在标签的原有内容的结尾,追加新内容
        $("ol").append("<li>Item two</li>");
        //在开头,追加新内容
        $("ol").prepend("<li>Items zero</li>");     //append、prepend可以有多个参数,但始终都当作一个整体来加到最后、开头
        //在选中元素之前、之后新增内容
        $(".p1").before("<p>段落0</p>");
        $(".p1").after("<p>段落2</p>");       //before、after也可以有多个参数,用法一样
    </script>

    删除元素、内容:

    <ol id="one">
        <li>Item one</li>
    </ol>
    <ol id="two">
        <li>Item one</li>
    </ol>
    <ol>
        <li id="item1">Item one</li>
        <li id="item2">Item two</li>
    </ol>
    <script>
        $("#one").remove();   //删除选中元素及其所有子元素
        //带参(jQuery选择器)的remove:此时的选择器不是对子元素进行过滤
        $("li").remove("#item1");
        $("#two").empty();    //仅仅清空掉选中元素的所有子元素(本身不删掉);empty无论带不带参,效果都一样
    </script>

    增加、删除类(样式):

    <button id="b1">red</button>
    <button id="b2">deepskyblue</button>
    <button id="b3">toggle</button>
    <p>test</p>
    <style>
        .p1{
            color: red;
        }
        .p2{
            color: deepskyblue;
        }
    </style>
    <script>
        $("#b1").click(function () {
            $("p").removeClass().addClass("p1");    //如果不先删除,那么就有可能会有多个class组合到一起(例如此处可能变成"p1 p2")
            //$("p").removeClass("p1");     //上面是删掉元素的所有类。但是如果多个类组合到一起了,也可以指定某一个删掉
        });
        $("#b2").click(function () {
            $("p").removeClass().addClass("p2");
        });
        $("#b3").click(function () {
            $("p").toggleClass("p1");   //切换:如果有这个类,就只删掉这个类;如果没有,就增加这个类
        });
    </script>

    直接设置CSS样式:

    <p style="color: red">test</p>
    <script>
        //获得propertyname的value:css("propertyname")只返回首个匹配元素的属性value
        document.write($("p").css("color"));
        //css("propertyname", "value");
        $("p").css("color", "deepskyblue");     //设置:还是返回对象,而不是value
        //设置多个CSS属性,把所有CSS属性用{}括起来:js对象
        $("p").css({ "color": "red", "background-color": "black" });
    </script>

    设置元素和浏览器窗口的尺寸:

    <div>hello</div>
    <script>
        //width()、height() 方法设置或返回元素的宽度、高度(不包括内边距、边框或外边距)
        document.write($("div").width() + " and " + $("div").height(100) + "<br />");   //设置返回的是对象
        //innerWidth()、innerHeight() 方法返回元素的宽度、高度(包括内边距)
        document.write($("div").innerWidth() + " and " + $("div").innerHeight() + "<br />");
        //outerWidth()、outerHeight() 方法返回元素的宽度、高度(包括内边距和边框)
        document.write($("div").outerWidth() + " and " + $("div").outerHeight(true) + "<br />");    //参数true,表示在无参的基础,还要算上margin
        //当然以上的结果都是一样的,因为没有设置padding、border、margin,就是说=0
    
        //通过代表浏览器的对象,获得浏览器的相关参数(浏览器的高度、宽度等都由用户操控,所以我们只读取相关参数就行了)
        document.write($(document).width() + " and " + $(window).width() + "<br />");
    </script>

    遍历:

    1、先查找:

    找爸爸:

    <div id="grandparent">
        <ul id="parent">
            <li><p><span>test</span></p></li>
        </ul>
    </div>
    <script>
        //向上遍历(祖先)
        document.write($("li").parent().attr("id"));        //直接父元素
        $("li").parents().css("color", "red");      //返回被选元素的所有祖先元素,它一路向上直到文档的根元素 (<html>)
        //使用参数对得到的祖先元素进行过滤
        $("li").parents("ul").css("color", "deepskyblue");      //只要ul祖先
        //直到(until)某个祖先为止:parentsUntil方法的参数为截至的那个祖先元素
        $("span").parentsUntil("li").css("color", "red");   //ul是deepskyblue,所以是蓝色的小圆点;li是red,所以li的text是红色的
    </script>

    找娃娃:

    <div id="grandparent">
        <ul id="parent1">
            <li id="one"><p><span>test1</span></p></li>
            <li id="two"><p><span>test2</span></p></li>
        </ul>
        <ol id="parent2">
            <li><p>Item</p></li>
        </ol>
    </div>
    <script>
        //向下遍历(后代)
        $("#parent1").children().css("color", "red");      //返回所有直接子元素
        document.write($("#parent1").children("#one").html());      //使用参数(选择器)从所选直接子元素中过滤
        //从后代中寻找,指定的后代(不一定是直接后代)
        document.write($("#parent2").find("p").html());     //寻找ol的所有p后代;*可代表所有后代
    </script>

    找兄弟:

    <div id="grandparent">
        <ul id="parent1">
            <li id="one"><p><span>test1</span></p></li>
            <li id="two"><p><span>test2</span></p></li>
            <li id="three"><p><span>test3</span></p></li>
            <li id="four"><p><span>test4</span></p></li>
            <li id="five"><p><span>test5</span></p></li>
        </ul>
    </div>
    <script>
        //水平遍历(同胞,即有相同的父元素)
        $("#one").siblings().css("color", "red");     //返回所有同胞(不包括自己)
        document.write($("#one").siblings("#three").html());      //过滤
        //只返回下一个同胞元素
        document.write($("#one").next().html());
        //返回向后的所有同胞元素(前面的就不要了,自然也不包括自己)
        $("#three").nextAll().css("color", "deepskyblue");
        //直到型nextAll
        $("#two").nextUntil("#four").css("color", "blue");  //居然不包括#four
        //prev(), prevAll() 以及 prevUntil()自然同理,只不过方向相反
    </script>

    专门的过滤(事先缩小搜索元素的范围):

    <ul id="parent1">
        <li id="one"><p><span>test1</span></p></li>
        <li id="two"><p><span>test2</span></p></li>
        <li id="three"><p><span>test3</span></p></li>
    </ul>
    <script>
        //最基本的过滤方法:first(), last() 和 eq() —— 基于在一组元素中的位置,来选择某一个特定的元素
        document.write($("li").first().html() + $("li").last().html() + $("li").eq(0).html());     //获得一组元素 — 过滤:只要first、last;指定位置eq(0-length)
        //过滤器:不满足条件(选择器)的会从选择结果中去掉(不会影响网页DOM结构)
        document.write($("li").filter("#two").html());
        //not过滤器:与filter相反
        $("li").not("#one").css("color", "red");    //满足的去掉:2、3变红了
    </script>

    2、找到后遍历:

    var children = $("#ListBox2").children();
    for (var i = 0; i < children.length; i++)
    {
        //这样只是JavaScript的对象:因此children[i].text()是会报错的,后面的代码就不执行了
        if (children[i].innerText == $(this).text())
        {
        }
    }

    多个框架,使用"$"符号冲突时:

    var jq = $.noConflict();    //jQuery.noConflict();这样写,jQuery依然可以使用,只是$不能用了

    比较高级、细节的东西

    1、Attribute和Property的区别:

    问题(摘自于实验报告):JQuery中如何获取某个元素的属性?结合互联网中关于DOM中的Attribute和Property两种属性的解释回答,何时该访问Attribute,何时该访问Property?

    答:特性Attribute:是DOM节点自身所带的属性,如id、class、href等。获取特性如下:$("a").attr("href");

    属性Property:为DOM对象所附加的内容,例如childNodes、firstChild等。可以在浏览器审查的Properties栏中查看。如何获取暂时不知道,遇到了再说。

    好,现在遇到了:$("#test").prop("checked");//得到的结论是(且不论对错):Attribute是不一定有的,例如这里的input[type=checkbox],如果没写checked这个Attribute,则不能获取(无论是否选中,都只能得到undefined);而属性Property是一直都有的,只是选中与否,对应的值不一样。

    查自于jQuery官网

    事件绑定:

    .on(events [,selector] [,data],handler)    //为selector的元素的events事件 (复数是因为on函数可以为多个事件绑定相同/不同的handler) 附加handler事件处理函数
  • 相关阅读:
    表的外键创建:
    django内容回顾:
    编辑出版社:
    删除出版社:
    新增出版社:
    Windows XP SP3中远程桌面实现多用户登陆
    Hibernate基本概念 (4)
    Hibernate基本概念 (3)
    Hibernate基本概念 (3)
    Hibernate基本概念 (3)
  • 原文地址:https://www.cnblogs.com/quanxi/p/6357789.html
Copyright © 2011-2022 走看看