• JQuery第三天——CSS操作与JQuery事件


      JQuery的CSS_DOM与样式操作

        样式:

        获取 class 和设置 class : class 是元素的一个属性, 所以获取 class 和设置 class 都可以使用 attr() 方法来完成.

        追加样式: addClass() 移除样式: removeClass() --- 从匹配的元素中删除全部或指定的 class

        切换样式: toggleClass() --- 控制样式上的重复切换.如果类名存在则删除它, 如果类名不存在则添加它.

        判断是否含有某个样式: hasClass() --- 判断元素中是否含有某个 class, 如果有, 则返回 true; 否则返回 false

        CSS_DOM操作 

        获取和设置元素的样式属性: css()

        获取和设置元素透明度: opacity 属性

        获取和设置元素高度, 宽度: height(), width(). 在设置值时, 若只传递数字, 则默认单位是 px. 如需要使用其他单位则需传递一个字符串, 例如       $(“p:first”).height(“2em”);

        获取元素在当前视窗中的相对位移: offset(). 其返回对象包含了两个属性: top, left. 该方法只对可见元素有效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
            <style type="text/css">
                *{ margin:0; padding:0;}
                body {font-size:12px;text-align:center;}
                a { color:#04D; text-decoration:none;}
                a:hover { color:#F50; text-decoration:underline;}
                .SubCategoryBox {600px; margin:0 auto; text-align:center;margin-top:40px;}
                .SubCategoryBox ul { list-style:none;}
                .SubCategoryBox ul li { display:block; float:left; 200px; line-height:20px;}
                .showmore { clear:both; text-align:center;padding-top:10px;}
                .showmore a { display:block; 120px; margin:0 auto; line-height:24px; border:1px solid #AAA;}
                
                .showmore a span { padding-left:15px; background:url(img/down.gif) no-repeat 0 0;}
                
                .promoted a { color:#F50;}
            </style>
            <script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
            <script type="text/javascript">
                $(function(){
                    
                    //测试 jQuery 样式相关的方法. 
                    
                    //1. hasClass(): 某元素是否有指定的样式
                    var bool = $("div:first").hasClass("SubCategoryBox");
                    //alert(bool);
                    //2. 移除样式
                    var bool2 = $("div:first").removeClass("SubCategoryBox");
                    alert(bool2);
                    //3. 添加样式
                    $("div:first").addClass("SubCategoryBox");
                    //4. 切换样式: 存在, 则去除; 没有, 则添加. 
                    $(".showmore").click(function(){
                        $("div:first").toggleClass("SubCategoryBox");
                        //取消默认行为
                        return false;
                    });
                    //5. 获取和设置元素透明度: opacity 属性
                    var $css = $("div:first").css("opacity");
                    alert($css);
                    $("div:first").css("opacity",0.5);
                    //6. width 和 height
                    alert($("div:first").width());
                    alert($("div:first").width(300));
                    //7. 获取元素在当前视窗中的相对位移: offset(). 
                    //其返回对象包含了两个属性: top, left. 该方法只对可见元素有效
                    var top = $("div:first").offset().top;
                    var left = $("div:first").offset().left;
                    alert(top);
                    alert(left);
                });
            </script>
        </head>
        <body>
            <div class="SubCategoryBox">
                <ul>
                    <li ><a href="#">佳能</a><i>(30440) </i></li>
                    <li ><a href="#">索尼</a><i>(27220) </i></li>
                    <li ><a href="#">三星</a><i>(20808) </i></li>
                    <li ><a href="#">尼康</a><i>(17821) </i></li>
                    <li ><a href="#">松下</a><i>(12289) </i></li>
                    <li ><a href="#">卡西欧</a><i>(8242) </i></li>
                    <li ><a href="#">富士</a><i>(14894) </i></li>
                    <li ><a href="#">柯达</a><i>(9520) </i></li>
                    <li ><a href="#">宾得</a><i>(2195) </i></li>
                    <li ><a href="#">理光</a><i>(4114) </i></li>
                    <li ><a href="#">奥林巴斯</a><i>(12205) </i></li>
                    <li ><a href="#">明基</a><i>(1466) </i></li>
                    <li ><a href="#">爱国者</a><i>(3091) </i></li>
                    <li ><a href="#">其它品牌相机</a><i>(7275) </i></li>
                </ul>
                <div class="showmore">
                    <a href="more.html"><span>显示全部品牌</span></a>
                </div>
            </div>
        </body>
    </html>
    View Code

        JQuery的事件

         1.加载DOM

              在页面加载完毕后, 浏览器会通过 JavaScript 为 DOM 元素添加事件.

              在常规的 JavaScript 代码中, 通常使用 window.onload 方法, 仅一个

              在 jQuery 中使用$(document).ready() 方法. 可写多个

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Untitled Document</title>
            
            <script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
            <script type="text/javascript">
                
                //加载 DOM 的两种方式: jQuery 的 和 window.onlaod
                //之前的简写 :$(function(){})
                $(document).ready(function(){
                    alert(1);
                });
                
                //以下仅执行2 ,相当于给window属性赋值两次,只执行最后的一次
                /*
                window.onload = function(){
                    alert("1");
                }
                
                window.onload = function(){
                    alert("2");
                }
                */
            
            </script>
            
        </head>
        <body>
            <p>你喜欢哪个城市?</p>
            <ul id="city">
                <li id="bj" name="BeiJing">北京</li>
                <li>上海</li>
                <li id="dj">东京</li>
                <li id="se">首尔</li>
            </ul>
            
            <br><br>
            <p>你喜欢哪款单机游戏?</p>
            <ul id="game">
                <li id="rl">红警</li>
                <li>实况</li>
                <li>极品飞车</li>
                <li>魔兽</li>
            </ul>
            
            <br><br>
            <p>你喜欢哪种开发语言?</p>
            <ul id="language">
                <li>C</li>
                <li>Java</li>
                <li>.NET</li>
                <li>PHP</li>
            </ul>
            
            <br><br>
            gender: 
                <input type="radio" name="gender" value="male"/>Male
                <input type="radio" name="gender" value="female"/>Female
        
            <br><br>
            name: <input type="text" name="username" value="atguigu"/>
            
        </body>
    </html>    
    View Code

          2.事件绑定     

            对匹配的元素进行特定的事件绑定: bind()

          3.合成事件

            hover(): 模拟光标悬停事件. 当光标移动到元素上时, 会触发指定的第一个函数, 当光标移出这个元素时, 会触发指定的第二个函数.

           toggle(): 用于模拟鼠标连续单击事件.(轮流执行) 第一次单击元素, 触发指定的第一个函数,

                当再一次单击同一个元素时, 则触发指定的第二个函数,

                如果有更多个函数, 则依次触发, 直到最后一个. toggle() 的另一个作用: 切换元素的可见状态.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Untitled Document</title>
            <link href="css/style.css" type="text/css" rel="stylesheet" />
            <script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
            <script type="text/javascript">
                //为 .head 添加 Onclick 响应函数: 若 .content 隐藏则显示, 若 .content 显示, 则隐藏
                $(function(){
                    /* $(".head").click(function(){
                        //is()方法判定某个元素是否符合指定选择器
                        var flag = $(".content").is(":hidden");
                        if(flag){
                            //show() 显示元素
                            $(".content").show();
                        }else{
                            $(".content").hide();
                        }
                    }); */
                    //bind: 为某 jQuery 对象绑定事件. 
                /*     $(".head").bind("click",function(){
                        //is()方法判定某个元素是否符合指定选择器
                        var flag = $(".content").is(":hidden");
                        if(flag){
                            //show() 显示元素
                            $(".content").show();
                        }else{
                            $(".content").hide();
                        }
                    }); */
                        //mouseover: 鼠标移上去
                        //mouseout: 鼠标移出. 
                        
                    //合成事件: hover: 鼠标移上去执行第一个函数, 移出执行第二个函数. 
                    /* $(".head").hover(function(){
                        $(".content").show();
                    },function(){
                        $(".content").hide();
                    }); */
                    
                    //合成事件: toggle: 第一次点击执行第一个函数, 第二次点击执行第二个
                    //函数 ... 循环执行. 
                    $(".head").toggle(function(){
                        $(".content").show();
                    },function(){
                        $(".content").hide();
                    });
                })
            </script>
        
        </head>
        <body>
            <div id="panel">
                <h5 class="head">什么是jQuery?</h5>
                <div class="content">
                    jQuery是继Prototype之后又一个优秀的JavaScript库,它是一个由 John Resig 创建于2006年1月的开源项目。jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。它独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
                </div>
            </div>
        </body>
    
    </html>
    View Code

              //实际测试时出现自动轮换执行

          4.事件冒泡

               事件会按照 DOM 层次结构像水泡一样不断向上直至顶端 解决:

            在事件处理函数中返回 false, 会对事件停止冒泡. 还可以停止元素的默认行为.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Untitled Document</title>
            <style type="text/css">
                *{
                    margin: 0;
                    padding: 0;
                }
                body{
                    font-size: 13px;
                    line-height: 130%;
                    padding: 60px;
                }
                #content{
                     220px;
                    border: 1px solid #0050D0;
                    background: #96E555;
                }
                span{
                     200px;
                    margin: 10px;
                    background: #666666;
                    cursor: pointer;
                    color: white;
                    display: block;
                }
                p{
                     200px;
                    background: #888;
                    color: white;
                    height: 16px;
                }
            </style>
            <script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
            <script type="text/javascript">
            
                $(function(){
                    //事件的冒泡: 什么是事件的冒泡
                    //点击span 依次弹出 span div body
                    $("body").click(function(){
                        alert("body");
                    });
                    $("div").click(function(){
                        alert("div");
                    });
                    $("span").click(function(){
                        alert("span");
                        //如何解决事件的冒泡: 通过在响应函数的结尾返回 false, 可以阻止冒泡.
                        return false;
                    });
                
                     
                        
                })
            
            </script>
        </head>
        <body>
            <div id="content">
                外层div元素
                <span>内层span元素</span>
                外层div元素
            </div>
            
            <div id="msg"></div>    
            
            <br><br>
            <a href="http://www.hao123.com">WWW.HAO123.COM</a>    
        </body>
    </html>
    View Code

          5.事件对象的属性

            事件对象: 当触发事件时, 事件对象就被创建了. 在程序中使用事件只需要为函数添加一个参数. 该事件对象只有事件处理函数才能访问到.

                事件处理函数执行完毕后, 事件对象就被销毁了.

           event.pageX, event.pageY: 获取到光标相对于页面的 x, y 坐标.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Untitled Document</title>
            <style type="text/css">
                *{
                    margin: 0;
                    padding: 0;
                }
                body{
                    font-size: 13px;
                    line-height: 130%;
                    padding: 60px;
                }
                #content{
                     220px;
                    border: 1px solid #0050D0;
                    background: #96E555;
                }
                span{
                     200px;
                    margin: 10px;
                    background: #666666;
                    cursor: pointer;
                    color: white;
                    display: block;
                }
                p{
                     200px;
                    background: #888;
                    color: white;
                    height: 16px;
                }
            </style>
            <script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
            <script type="text/javascript">
            
                /*
                1. 事件: 当鼠标移动时, 就会触发 mousemove 事件. 
                2. 如何得到事件对象: 在响应函数中添加一个参数就可以. 
                3. 事件对象的两个属性: pageX,pageY
                */
                $(function(){
                    //事件的 pageX, pageY 属性
                    $("body").mousemove(function(obj){
                        $("#msg").text("x: " + obj.pageX 
                                + ", y: " + obj.pageY);
                    });
                })
            
            </script>
        </head>
        <body>
            <div id="content">
                外层div元素
                <span>内层span元素</span>
                外层div元素
            </div>
            
            <div id="msg"></div>    
            
            <br><br>
            <a href="http://www.hao123.com">WWW.HAO123.COM</a>    
        </body>
    </html>
    View Code

          6.移除事件

              移除某按钮上的所有 click 事件: $(“btn”).unbind(“click”)

            移除某按钮上的所有事件: $(“btn”).unbind(); one(): 该方法可以为元素绑定处理函数. 当处理函数触发一次后, 立即被删除.

              即在每个对象上, 事件处理函数只会被执行一次.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Untitled Document</title>
            
            <script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
            <script type="text/javascript">
                
                //测试移除事件: 使用 unbind 移除事件. 
                //one(): 只为某一个元素添加一次事件, 事件函数响应后, 将不再被触发响应. 
                $(function(){
                    $("#rl").one("click",function(){
                        alert("红警");
                    });
                    /* $("li").click(function(){
                        alert(this.firstChild.nodeValue);
                        if(this.id == "bj"){
                            $("#bj").unbind("click");
    
                        }
                            }); */
                })
                
            
            </script>
            
        </head>
        <body>
            <p>你喜欢哪个城市?</p>
            <ul id="city">
                <li id="bj" name="BeiJing">北京</li>
                <li>上海</li>
                <li id="dj">东京</li>
                <li id="se">首尔</li>
            </ul>
            
            <br><br>
            <p>你喜欢哪款单机游戏?</p>
            <ul id="game">
                <li id="rl">红警</li>
                <li>实况</li>
                <li>极品飞车</li>
                <li>魔兽</li>
            </ul>
            
            <br><br>
            <p>你喜欢哪种开发语言?</p>
            <ul id="language">
                <li>C</li>
                <li>Java</li>
                <li>.NET</li>
                <li>PHP</li>
            </ul>
            
            <br><br>
            gender: 
                <input type="radio" name="gender" value="male"/>Male
                <input type="radio" name="gender" value="female"/>Female
        
            <br><br>
            name: <input type="text" name="username" value="atguigu"/>
            
        </body>
    </html>    
    View Code

          JQuery的动画

          学习时使用的版本为jquery-3.1.1.min.js,测试发现动画特效出现问题,改为视频的1.7版本显示动画正常

        动画1

          hide(): 在 HTML 文档中, 为一个元素调用 hide() 方法会将该元素的 display 样式改为 none. 代码功能同 css(“display”, “none”);

          show(): 将元素的 display 样式改为先前的显示状态.

          以上两个方法在不带任何参数的情况下, 作用是立即隐藏或显示匹配的元素, 不会有任何动画.

          可以通过制定速度参数使元素动起来. 以上两个方法会同时减少(增大)内容的高度, 宽度和不透明度.

         动画2

          fadeIn(), fadeOut(): 只改变元素的透明度. fadeOut() 会在指定的一段时间内降低元素的不透明度, 直到元素完全消失.fadeIn() 则相反.

          slideDown(), slideUp(): 只会改变元素的高度. 如果一个元素的 display 属性为 none, 当调用 slideDown() 方法时,

                       这个元素将由上至下延伸显示. slideUp() 方法正好相反, 元素由下至上缩短隐藏.

           

         动画3

            toggle(): 切换元素的可见状态: 如果元素时可见的, 则切换为隐藏; 如果元素时隐藏的, 则切换为可见的.

           slideToggle(): 通过高度变化来切换匹配元素的可见性.

           fadeTo(): 把不透明度以渐近的方式调整到指定的值 (0 – 1 之间). fadeTo() 作了解 使用举例:  $("p").fadeTo("slow", 0.66

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Untitled Document</title>
            <link href="css/style.css" type="text/css" rel="stylesheet" />
            <script type="text/javascript" src="scripts/jquery-1.7.2.js"></script>
        
            <script type="text/javascript">
                //演示动画效果: show() 和 hide() 方法中传入毫秒数以达到动画的效果
                /* 
                $(function(){ 
                    $(".head").toggle(function(){
                        $(".content").show(1000);
                    }, function(){
                        $(".content").hide(1000);
                    });
                }) */
    
                //只改变高度
                /*
                $(function(){ 
                    $(".head").toggle(function(){
                        $(".content").slideDown(500);
                    }, function(){
                        $(".content").slideUp(500);
                    });
                })
                */
                //只改变透明度
                
                $(function(){ 
                    $(".head").toggle(function(){
                        $(".content").fadeIn(1000);
                    }, function(){
                        $(".content").fadeOut(1000);
                    });
                })
                
                
                //toggle() 可以切换元素的可见状态. 
                //slideToggle(): 通过高度变化来切换匹配元素的可见性
                //fadeToggle(): 通过透明度来切换元素的可见性.
                //fadeTo(): 把不透明度以渐近的方式调整到指定的值 (0 – 1 之间). 
                /* $(function(){ 
                    $(".content").show();
                    var i = 1; 
                    
                    $(".head").click(function(){
                        //$(".content").toggle();
                        //$(".content").slideToggle();
                        //$(".content").fadeToggle();
                        
                        $(".content").fadeTo("slow", i);
                        i = i - 0.1;
                    });
                }) */
            </script>
        
        </head>
        <body>
            <div id="panel">
                <h5 class="head">什么是jQuery?</h5>
                <div class="content">
                    jQuery是继Prototype之后又一个优秀的JavaScript库,它是一个由 John Resig 创建于2006年1月的开源项目。jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。它独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
                </div>
            </div>
        </body>
    
    </html>
    View Code

      练习:品牌列表

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
            <style type="text/css">
                *{ margin:0; padding:0;}
                body {font-size:12px;text-align:center;}
                a { color:#04D; text-decoration:none;}
                a:hover { color:#F50; text-decoration:underline;}
                .SubCategoryBox {600px; margin:0 auto; text-align:center;margin-top:40px;}
                .SubCategoryBox ul { list-style:none;}
                .SubCategoryBox ul li { display:block; float:left; 200px; line-height:20px;}
                .showmore { clear:both; text-align:center;padding-top:10px;}
                .showmore a { display:block; 120px; margin:0 auto; line-height:24px; border:1px solid #AAA;}
                
                .showmore a span { padding-left:15px; background:url(img/down.gif) no-repeat 0 0;}
                
                .promoted a { color:#F50;}
            </style>
            <script type="text/javascript" src="scripts/jquery-1.3.1.js"></script>
            <script type="text/javascript">
                /*
                var $category = $("li:gt(5):lt(10)");
                此时的 lt 是在 li:gt(5) 基础上进行的. 
                */
                $(function(){
                    //1. 需要选择从 "富士" - "爱国者" 的所有 li: $category
                    var  $category = $("li:gt(5):not(:last)");
                    //2. 把他们隐藏. 
                    $category.hide();
                    //3. 为 .showmore 添加一个 onclick 响应函数(取消默认行为)
                    $(".showmore").click(function(){
                        if($category.is(":hidden")){
                            $category.show();
                            //4.2 使 "佳能", "尼康", "奥林巴斯" 变为高亮显示: 
                            //添加 .promoted 的 class
                            $("li:contains('佳能'),li:contains('尼康'),li:contains('奥林巴斯')").addClass("promoted");
                            //4.3 .showmore > a > span 的文字变为: 显示精简品牌
                            $(".showmore > a > span").text("显示精简品牌");
                            //4.4 .showmore > a > span 的 background 变为: 
                            //url(img/up.gif) no-repeat 0 0
                            $(".showmore > a > span").css("background","url(img/up.gif) no-repeat 0 0");
                        }else{
                            //5. 若 $category 是显示的.为上面的逆过程
                            $category.hide();
                            $("li:contains('佳能'),li:contains('尼康'),li:contains('奥林巴斯')").removeClass("promoted");
                            $(".showmore > a > span").css("background","url(img/down.gif) no-repeat 0 0");
                            
                        }
                        return false;
                    });
                });
            </script>
        </head>
        <body>
            <div class="SubCategoryBox">
                <ul>
                    <li ><a href="#">佳能</a><i>(30440) </i></li>
                    <li ><a href="#">索尼</a><i>(27220) </i></li>
                    <li ><a href="#">三星</a><i>(20808) </i></li>
                    <li ><a href="#">尼康</a><i>(17821) </i></li>
                    <li ><a href="#">松下</a><i>(12289) </i></li>
                    <li ><a href="#">卡西欧</a><i>(8242) </i></li>
                    <li ><a href="#">富士</a><i>(14894) </i></li>
                    <li ><a href="#">柯达</a><i>(9520) </i></li>
                    <li ><a href="#">宾得</a><i>(2195) </i></li>
                    <li ><a href="#">理光</a><i>(4114) </i></li>
                    <li ><a href="#">奥林巴斯</a><i>(12205) </i></li>
                    <li ><a href="#">明基</a><i>(1466) </i></li>
                    <li ><a href="#">爱国者</a><i>(3091) </i></li>
                    <li ><a href="#">其它品牌相机</a><i>(7275) </i></li>
                </ul>
                <div class="showmore">
                    <a href="more.html"><span>显示全部品牌</span></a>
                </div>
            </div>
        </body>
    </html>
    View Code
  • 相关阅读:
    Codeforces Round #319 (Div. 2) D
    Codeforces Round #324 (Div. 2) E
    hdu1762 树的上的查询
    GitChat---------顶级高手交流会,好想成为会员哦
    关于项目中遇到的问题-- vue登陆拦截()
    关于项目中遇到的问题--vue格式问题
    项目中遇到的问题------JD商城(相对路径和绝对路径)、以及导出的返回更改
    项目中遇到的问题------vue 配置后台接口方式?
    项目中遇到的问题------vue构建好后IDEA导入VUE项目报错的问题
    项目中遇到的问题------后台已搭建好,怎么构建前端VUE?
  • 原文地址:https://www.cnblogs.com/jiangbei/p/6871632.html
Copyright © 2020-2023  润新知