• jquery 第四章


    1.回顾

      节点.append(内容)

      节点.prepend(内容)

      节点.remove()

      节点.attr("属性","值")

      节点.css("样式","值")

      节点.html() .text .val()

    2.本章目标

      掌握jquery 的事件与动画

    3.事件

      在某个特定的条件下会被执行的一段代码,事件通常用来与用户进行交互

      常用的事件:load,click,focus(获取焦点),blur(失去焦点),mousrmove()

    4.加载事件

      js:window.onload=function(){

      //逻辑代码

      }

      //在jquery1.8+杯废弃

      jquery:

      $(window).load(function(){

      //逻辑代码

      })

      $(document).ready(function(){

      //逻辑代码

      })

      $().ready(function(){

      //逻辑代码

      })

      $(function(){

      //逻辑代码

      })

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
            <script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>
            <script type="text/javascript">
                window.onload=function(){
                    alert(1)
                }
                 $(document).ready(function(){
                    alert(2)
            
              })
            
              $().ready(function(){
            
              alert(3)
              })
            
              $(function(){
            
              alert(4)
              })
            </script>
        </head>
        <body>
            
        </body>
    </html>
    加载事件

    5.绑定事件

      绑定单个事件:

        对象.bind("事件名",function(){

        //逻辑代码

        })

      绑定多个事件

        //第一种写法

        对象.bind("事件1",function(){

        //逻辑代码

        })

        .bind("事件2",function(){

        //逻辑代码

        })

        //第二种写法

        对象.bind({

        "事件1":function(){},

        "事件1":function(){}

        ...........

        })

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
            <script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>
            <script type="text/javascript">
                 $(document).ready(function(){
                    //当鼠标光标在input 框内时 获取焦点事件
                    $("input").bind("focus",function(){
                        $(this).css("border","1px red solid")
                    })
                    //当鼠标光标在div区域时,设置背景颜色
                    $("div").bind("mousemove",function(){
                        $(this).css("background-color","midnightblue")
                    })
                    .bind("mouseout",function(){
                        $(this).css("background-color","white")
                    })
                    //不使用bind 直接通过事件函数
    //                $("div").mousemove(function(){
    //                    $(this).css("background-color","midnightblue")
    //                }).mouseout(function(){
    //                        $(this).css("background-color","white")
    //                })
              })
            
              //卸载事件
    //            $("div").unbind("mousemove")
            </script>
        </head>
        <body>
            <input  />
            <div style="200px; height: 100px; border: 1px solid cadetblue;">
                
            </div>
        </body>
    </html>
    绑定事件

    完成:可编辑的表格  (鼠标移动离开变色)   代码如下

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                table{
                    width: 480px;
                    height: 200px;
                    border-collapse: collapse;
                }
                table tr th,td{
                    border-collapse: collapse;
                    border: 1px solid darkgoldenrod;
                    text-align: center;
                }
                table td{
                    width:160px;
                    height: 50px;
                }
                
            </style>
            <script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>
            <script type="text/javascript">
                //当焦点在某个td单元格中时有背景颜色
                $(function(){
                    $("table tr td").bind("mousemove",function(){
                        $(this).css("background-color","darkseagreen")
                    })
                    .bind("mouseout",function(){
                        $(this).css("background-color","white")
                    })
                    //单元格的单击事件
                    .bind("click",function(){
                        //如果当时td中的内容是input时,不执行后面代码
                        if($(this).children().is("input")){
                            return
                        }
                        //获取单元格的原始数据
                        var txt=$(this).text()
                        //创建输入框对象
                        var input=$("<input />")
                        //给输入框添加原始数据
                        input.val(txt)
                        //设置输入框,高和单元格一样
                        input.width($(this).width())
                        input.height($(this).height())
                        //清除单元格数据
                        $(this).text("")
                        input.appendTo($(this))
                        //为输入框绑定失去焦点事件
                        input.bind("blur",function(){
                            var inputValue=input.val()
                            input.parent().text(inputValue)
                            input.remove()
                        })
                    })
                    
                    
                    
                })
                
            </script>
        </head>
        <body>
            <table border="" >
                <tr><td>姓名</td><td>性别</td><td>年龄</td></tr>
                <tr><td>张三</td><td></td><td>20</td></tr>
                <tr><td>李四</td><td></td><td>21</td></tr>
                <tr><td>王五</td><td></td><td>22</td></tr>
            </table>
        </body>
    </html>
    可编辑的表格

     6.事件的冒泡

      页面元素有嵌套时,若同时绑定了同一事件,触发事件时,会由里到外依次执行

      解决方案:

        方案一:只需要在事件代码中添加:return false;

        方案二:需要在事件函数中添加参数(event),代码末尾中添加:event.stopPropagation()

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>
            <script type="text/javascript">
                $(function(){
                    $("div").click(function(){
                        alert("div")
                    })
                    $("span").click(function(event){
                        alert("span")
                        event.stopPropagation()
                    })
                    $("p").click(function(){
                        alert("p")
                        return false
                    })
                    
                })
                
            </script>
        </head>
        <body>
            <div id="">
                div内容
                <span id="">
                    span内容
                    <p>p内容</p>
                </span>
            </div>
        </body>
    </html>
    事件的冒泡 以及停止事件冒泡

    7.模拟触发事件

    不需要用户主动触发,就可以执行的事件

    比如:按钮通常都需要用户点击时才会执行一段代码,使用模拟触发事件,用户不需要点击按钮,也能执行单击事件代码

      语句:

        对象.trigger("事件/自定义事件")

    8.合成事件

      把多个事件合到一起执行

      鼠标的移入移出

        对象.hover(function(){},function(){})

        模拟鼠标的悬停事件,鼠标悬停时触发第一个函数执行,鼠标离开触发第二个函数执行

      鼠标的单击合成

        对象.toggle(function(){},function(){},...............)

        模拟鼠标的单击合成事件,鼠标单击一次执行第一个函数,鼠标点击两次执行第二个函数............

        在jquery1.8之后被弃用了

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                ul{
                    display: none;
                }
            </style>
            <script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>
            <script type="text/javascript">
                $(function(){
                    $("span").hover(function(){
                        $(this).next("ul").show(3000)
                        
                    },function(){
                        $(this).next("ul").hide(3000)
                    })
                })
                
            </script>
        </head>
        <body>
            <div id="div1">
                <span>操作1</span>
                <ul>
                    <li>添加</li>
                    <li>修改</li>
                    <li>删除</li>
                </ul>
            </div>
            <div id="div2">
                <span>操作2</span>
                <ul>
                    <li>添加</li>
                    <li>修改</li>
                    <li>删除</li>
                </ul>
                
            </div>
        </body>
    </html>
    合成事件

    9.动画

      hide([毫秒数]),show([毫秒数])      显示隐藏动画

      slideUp([毫秒数]),slideDown([毫秒数])向上,向下滑动

      fadeIn([毫秒数]),fideOut([毫秒数])      淡入淡出动画

      自定义动画

        对象.animate({"属性1":"值1","属性2","值2".......},毫秒数,[回调函数])

        注意:如果想要使用left,right,top,bottom属性,需要把元素设置为position,absolute或者relative

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                div{
                    width: 100px;
                    height: 100px;
                    background-color: #B8860B;
                    position: relative;
                    display: none;
                }
            </style>
            <script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>
            <script type="text/javascript">
                $(function(){
                    $("div").fadeIn(1000)
                            .animate({left:"500px",top:"200px"},3000)
                            .animate({left:"1000px",top:"0px"},3000)
                            .fadeOut(1000)
                })
                
            </script>
        </head>
        <body>
            <div>
            
            </div>
        </body>
    </html>
    完成div的v字型移动

    10.停止动画

      对象.stop()

      判断动画是否处于活动中

      if(对象.is(":animated")){

      }

    案例    实现 正方形放大缩小效果(随时都能停止)

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                    div{
                    width: 100px;
                    height: 100px;
                    background-color: #B8860B;
                    position: relative;
                    
                }
            </style>
            <script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>
            <script type="text/javascript">
                $(function(){
                    $("button:first").click(function(){
                        if(!$("div").is(":animated")){
                            $("div").animate({"200px",height:"200px"},5000)
                        }                
                    })
                    $("button:last").click(function(){
                        if($("div").is(":animated")){
                            $("div").stop()
                        }                
                    })
                    
                })
            </script>
        </head>
        <body>
            <button>开始</button>
            <button>停止</button>
            <div>
                
            </div>
        </body>
    </html>
    正方形放大缩小效果

     作业1

    使用jquery实现光棒效果

    hover()事件

    addClass()和removeClass()方法

    代码

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>光棒效果</title>
            <style type="text/css">
                table{
                    width: 640px;
                    border-collapse: collapse;
                }
                table th{
                    border: solid 1px black;
                    background-color: gray;
                }
                table td{
                    border: solid 1px black;
                }
                .highlight{
                    background-color: Highlight;
                }
                .selected{
                    background-color: yellow;
                }
            </style>
            <script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>
            <script type="text/javascript">
                $(function(){
                    //实现光影效果
                    $("#tbStudent tr:gt(0)").hover(function(){
                        $(this).addClass("selected");
                        
                    },function(){
                        $(this).removeClass("selected")
                        
                    })            
                    //实现全选反选代码如下
                    $("#chkAll").click(function(){
                        var checkedVal = $(this).attr("checked",true);
                        $(".chk").each(function(){
                            var subchecked = $(this).attr("checked",false)
                            if(subchecked != checkedVal)
                                $(this).click();
                            
                            
                        })
                        
                    })
                })
            </script>
        </head>
        <body>
            <table id="tbStudent">
                <tr>
                    <th><input type="checkbox" name="chkAll" id="chkAll" value="" />全选</th>
                    <th>学号</th><th>姓名</th><th>年龄</th><th>性别</th>
                </tr>
                <tr>
                    <td><input type="checkbox" class="chk" id="chk" value="" /></td>
                    <td>s001</td><td>张三</td><td>22</td><td></td>
                </tr>
                <tr>
                    <td><input type="checkbox" class="chk" id="Checkbox1" value="" /></td>
                    <td>s002</td><td>李四</td><td>22</td><td></td>
                </tr>
                <tr>
                    <td><input type="checkbox" class="chk" id="Checkbox2" value="" /></td>
                    <td>s003</td><td>王五</td><td>22</td><td></td>
                </tr>
                <tr>
                    <td><input type="checkbox" class="chk" id="Checkbox3" value="" /></td>
                    <td>s004</td><td>马六</td><td>22</td><td></td>
                </tr>
                <tr>
                    <td><input type="checkbox" class="chk" id="Checkbox4" value="" /></td>
                    <td>s005</td><td>李七</td><td>22</td><td></td>
                </tr>
            </table>
        </body>
    </html>
    光棒效果

    总结  全选反选 出了一点问题  改进了!!!!加了true 和false

    作业2

    使用jquery实现流式导航菜单

    主要知识点

    .slideDown()方法 和slideUp()方法

    代码如下()

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>    
             <script type="text/javascript">
                  $(function(){
                   $("#menuBar li").click(function(){
                    var url=$(this).find("a").attr("href");
                    document.location.href=url;
                   })
                   
                   $("#menuBar li").hover(function(){
                    $(this).find(".menuInfo").slideDown();
                   },function(){
                    $(this).find(".menuInfo").slideUp();
                   })
                   
                   
                  })
      
       
     </script>
    
            <style>
          #menuBar{
           width: 730px;
           height: 45px;
           background: #000;
           color: #fff;
           font-family: arial;
           font-size: 14px;
           margin-top: 20px;
          }
          #menuBarHolder{
           list-style-type: none;
           display: block;
          }
          .firstchild{
           border-left: 1px solid #ccc;
          }
          #container{
           margin-top: 10px;
          }
          #menuBar li{
           float: left;
           padding: 15px;
           height: 16px;
           width: 75px;
           border-right: 1px solid #ccc;
          }
          #menuBar li a{
           color: #fff;
           text-decoration: none;
           letter-spacing: -1px;
           font-weight: bold;
          }
          .menuHover{
           background-color: #999;
          }
          .menuInfo{
           cursor: hand;
           background-color: #000;
           color: #fff;
           width: 74px;
           font-size: 11px;
           height: 100px;
           padding: 3px;
           display: none;
           position: absolute;
           margin-left: -15px;
           margin-top: -10px;
           -moz-border-radius-bottomleft: 5px;
           -moz-border-radius-bottomright: 5px;
           -webkit-border-bottom-left-radius: 5px;
           -webkit-border-bottom-right-radius: 5px;
           -khtml-border-radius-bottomright:5px;
           -khtml-border-radius-bottomleft:5px;
           
          }
          h1{
           font: 50px normal georgia,"times new roman",times,serif;
           color: #111;
           margin: 0;
           text-align: 5px 0;
          }
          h1 small{
           font: 0.2em normal verdana,arial,helvetica,sans-serif;
           text-transform: uppercase;
           letter-spacing: 1.4em;
           display: block;
           color: #ccc;
          }
         </style>
        </head>
        
        <body>
      <center>
               <div id="container">
            <h1>流式导航菜单<br></h1>
                <div id="menuBarHolder">
                     <ul id="menuBar">
                          <li class="firstchild">
                               <a href="JavaScript:#">首页</a>
                               <div class="menuInfo">这是首页的链接</div>
                          </li>
                          <li>
                               <a href="JavaScript:#">公司简介</a>
                               <div class="menuInfo">公司成立于2005年...</div>
                          </li>
                          <li>
                               <a href="JavaScript:#">公司产品</a>
                               <div class="menuInfo">为有志进入IT行业的人提供优质服务</div>
                          </li>
                          <li>
                           <a href="JavaScript:#">个性化服务</a>
                           <div class="menuInfo">提供个性化的,对学习与帮助</div>
                          </li>
                          <li>
                           <a href="JavaScript:#">关于</a>
                           <div class="menuInfo">版权所有</div>
                          </li>
                          <li>
                           <a href="JavaScript:#">联系我们</a>
                           <div class="menuInfo">来吧,加入我们吧</div>
                          </li>
                     </ul>
                </div>
               </div>
      </center>
     </body>
    
    </html>
    流式导航菜单

    全选反选 简洁代码

    简洁

    作业3

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <title>广告图片的幻灯片播放效果</title>
            <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
            <script type="text/javascript">
                $(document).ready(function() {
                    var slideShow = $(".slideShow"), //获取div
                        ul = slideShow.find("ul"),
                        nav = slideShow.find(".nav span"), //获取按钮
                        oneWidth = ul.find("li").eq(0).width(),
                        timer = null,
                        iNow = 0;
                    slideShow.hover(function() {
                        clearInterval(timer);
    
                    }, autoPlay);
    
                    nav.on("click", function() { //添加点击按钮
    
                        var me = $(this),
                            index = me.index();
                        iNow = index;
                        ul.animate({
                            "left": -oneWidth * iNow,
    
                        });
                        nav.removeClass("active");
                        me.addClass("active");
    
                    });
    
                    autoPlay();
    
                    function autoPlay() {
                        timer = setInterval(function() {
                            iNow++;
    
                            if(iNow > nav.length - 1) {
                                iNow = 0;
    
                            }
                            nav.eq(iNow).trigger("click");
    
                        }, 2000);
    
                    }
    
                });
            </script>
            <style>
                * {
                    margin: 0;
                    padding: 0
                }
                
                ul,
                ol {
                    list-style: none;
                }
                
                .slideShow {
                    position: relative;
                    margin: 100px auto;
                    height: 400px;
                    width: 500px;
                    overflow: hidden;
                }
                
                .slideShow ul {
                    position: relative;
                    width: 2000px;
                }
                
                .slideShow ul li {
                    float: left;
                    width: 340px
                }
                
                .slideShow .nav {
                    text-align: center;
                    position: absolute;
                    right: 10px;
                    bottom: 10px;
                    font-size: 12px;
                    line-height: 18px;
                }
                
                .slideShow .nav span {
                    -webkit-user-select: none;
                    user-select: none;
                    float: left;
                    cursor: pointer;
                    border-radius: 9px;
                    display: inline-block;
                    width: 18px;
                    height: 18px;
                    background: rgba(0, 0, 0, 0.7);
                    margin-left: 2px;
                    color: #fff;
                    opacity: 0.5;
                }
                
                .slideShow .nav span.active {
                    opacity: 1;
                }
            </style>
        </head>
    
        <body>
            <div class="slideShow">
                <ul>
                    <li>
                        <a href="#"><img src="./img/01.jpg" alt=""></a>
                    </li>
                    <li>
                        <a href="#"><img src="./img/02.jpg" alt=""></a>
                    </li>
                    <li>
                        <a href="#"><img src="./img/03.jpg" alt=""></a>
                    </li>
                    <li>
                        <a href="#"><img src="./img/04.jpg" alt=""></a>
                    </li>
                    <li>
                        <a href="#"><img src="./img/05.jpg" alt=""></a>
                    </li>
                </ul>
                <div class="nav">
                    <span class="active">1</span>
                    <span>2</span>
                    <span>3</span>
                    <span>4</span>
                    <span>5</span>
                </div>
                <script src="js/jquery-3.1.1.min.js"></script>
                <script src="js/main.js"></script>
        </body>
    
    </html>
    实现广告图片的幻灯片播放效果

    (百度的,)

  • 相关阅读:
    20162325 金立清 S2 W7 C16
    2017-2018-1 我爱学Java 第三周 作业
    Android演示Stack(课下作业)
    20162325 金立清 S2 W6 C15
    YanghuiTriangle
    20162327WJH第一次实验——线性结构
    20162327 《程序设计与数据结构》第三周学习总结
    20162327《程序设计与数据结构》第一周作业
    20162327WJH 实验三 《敏捷开发与XP实践》 实验报告
    20162328WJH实验五网络编程与安全实验报告
  • 原文地址:https://www.cnblogs.com/faded8679/p/10521003.html
Copyright © 2020-2023  润新知