jquery中的事件和动画

jquery中的事件和动画

1.事件对象

Javascript中事件对象:window.event || ev (需要兼容火狐)

JQuery中事件对象:通过事件处理函数的参数传入 (已经处理好了兼容)

//常用的一些事件属性
$(document).click(function(ev){
     console.log(ev); //处理好兼容后的jquery事件对象
     console.log(ev.originalEvent);//MouseEvent  转换为DOM对象

     console.log(ev.clientX+"----------"+ev.clientY); // 相对于窗口
     console.log(ev.pageX+"----------"+ev.pageY); // 相对于页面


     console.log(ev.target); //事件目标
     console.log(ev.delegateTarget); //事件绑定的对象

     console.log(ev.shiftKey);//特殊键

});
2.事件冒泡和默认行为

Javascript中:需要兼容ie

阻止事件冒泡:

​ ev.stopPropagation?ev.stopPropagation():ev.cancelBubble=true
阻止默认行为

​ return false :普通添加事件

​ ev.preventDefault?ev.preventDefault():ev.returnValue=false:事件绑定

JQuery中

阻止事件冒泡:ev.stopPropagation()

阻止默认行为:return false(不管怎样添加的方式都可以用) ev.preventDefault()

        //1.点击按钮,让div显示
        $("button").click(function(ev){
            $("div").css("display","block");
            ev.stopPropagation();//如果不加阻止冒泡事件,div不会显示,隐藏事件会冒泡给显示事件
        });

        //2.点击页面空白部分,隐藏div
        $(document).click(function(){
            $("div").css("display","none");
        });



        $("a").click(function(){
            console.log("被点击了");
            return false;//阻止a标签跳转的默认行为
        })
3.事件绑定与取消

事件绑定:

语法:
$(选择器).on(事件类型,事件处理函数)
特点:
a.可以给同一个标签的同一个事件添加不同的处理函数
​ $(“div”).on(‘click’,fun);
​ $(“div”).on(‘click’,fun1);

b.可以给同一个标签的不同事件,添加同一个处理函数
​ $(“div”).on(‘click mouseover’,fun);

c.可以给一个标签同时添加多个事件
​ $(“div”).on({
​ “click”:fun,
​ “mouseover”:fun1
​ })

d.自定义事件

e.可以设置命名空间

事件取消 :(所有的事件,都可以通过off取消)

语法:

$(选择器).off(“事件类型”,“事件处理函数”);

        function fun(){
            console.log(this); //触发事件的对象
        }
        function fun1(){
            console.log(2); //触发事件的对象
        }

        $("div").on('click',fun);
        $("div").on('click',fun1);

        $("div").on('click mouseover',fun);

        $("div").on({
            "click":fun,
            "mouseover":fun1
        })

        $("button").on("abc",function(){
             console.log("我是一个自定义事件");
        })//需要自己手动调用
        $("button").trigger("abc");//使用trigger()方法调用自定义事件



        $("button").on("click.a",function(){
              console.log("fd");
        });

        $("button").on("click.b",function(){
              console.log("s");
        });



         $("button").off(); // 全部取消
         $("button").off("click"); // 取消固定类型
         $("button").off("click.a");
4.事件绑定one()

one()绑定的事件只执行一次

   $("button").one("click",function(){
            console.log("谢谢惠顾");
   });//只触发一次
5.事件委托
  //原生js的事件委托
  var  oUl = document.getElementsByTagName("ul")[0];
  //把事件添加到父元素上,当事件发生的时候,会找到具体的子元素,处理事情
       oUl.onclick = function(ev){
            var ev = window.event||ev;
            //找到具体的子元素
            var target = ev.target || ev.srcElement;
            target.style.background = "red";
        }
        //事件可以发生在未来,后添加的子元素也具有之前添加的事件
        oUl.innerHTML += "<li>5</li>" 

JQuery事件委托:
语法:$(父元素).on(事件类型,子元素,事件处理函数)

$("ul").on('click',"li",function(){
   console.log(this); //触发事件的子元素
    $(this).css("background","red").siblings().css("background","");
});

 $("ul").append("<li>5</li>")//同样事件可以发生在未来
6.合成事件hover()

语法:

$(“选择器”).hover(function(){}[滑入执行的函数],function(){}[滑出执行的函数])

        $("div").hover(function(){
            //移入
            $(this).css("background","red")//移入背景为红色
        },function(){
            //移出
            $(this).css("background","pink")//移除背景为粉色
        })
7.JQuery中的动画

(1)显示隐藏:show()、hide()、toggle() (运动的是宽高透明度)

语法:

显示:show(speed[运动时间],easing[运动方式],callback[回调函数])

隐藏:hide(speed[运动时间],easing[运动方式],callback[回调函数])

开关效果:toggle(speed[运动时间],easing[运动方式],callback[回调函数])

参数:

​ speed: number(自定义) fast(200ms) normal(400ms) slow(600ms)

​ easing:linear[匀速] swing[慢快慢]

​ callback:运动做完以后执行的函数

    //以show举例
    div{
            width: 200px;
            height: 200px;
            background: skyblue;
            
        }
    <button>show</button>
    $("button").click(function(){
          $("div").show(2000,"linear",function(){
               console.log("饿吗");
           });
     });

(2)滑入滑出:slideDown()、slideUp()、slideToggle() (运动的是高)

语法:

显示:$(选择器).slideDown(speed[运动时间],easing[运动方式],callback)

隐藏:$(选择器).slideUp(speed[运动时间],easing[运动方式],callback)

开关效果:$(选择器).slideToggle(speed[运动时间],easing[运动方式],callback)

参数:

​ speed: number(自定义) fast(200ms) normal(400ms) slow(600ms)

​ easing:linear[匀速] swing[慢快慢]

​ callback:运动做完以后执行的函数

   //以slideDown举例
   div{
            width: 200px;
            height: 200px;
            background: skyblue;
            display:none;
            
        }
    <button>slideDown</button>
    $("button").click(function(){
          $("div").slideDown(2000,"linear",function(){
               console.log("饿吗");
           });
     });

(3)淡入淡出:fadeIn()、fadeOut()、fadeToggle()、fadeTo() (运动的是透明度)

语法:

显示:$(选择器).fadeDown(speed[运动时间],easing[运动方式],callback)

隐藏:$(选择器).fadeUp(speed[运动时间],easing[运动方式],callback)

开关效果:$(选择器).fadeToggle(speed[运动时间],easing[运动方式],callback)

透明到:$(选择器).fadeTo(speed[运动时间],透明度,easing[运动方式],callback)

参数:

​ speed: number(自定义) fast(200ms) normal(400ms) slow(600ms)

​ easing:linear[匀速] swing[慢快慢]

​ callback:运动做完以后执行的函数

 div{
            width: 300px;
            height: 300px;
            background: red;
            
     }
    <button>fadeOut</button>
    $("button").click(function(){
            $("div").fadeOut(2000);
    })
    $("#fadeTo").click(function(){
            $("div").fadeTo(1000,0.3);//运动到透明度为0.3停止
        })

(4)自定义动画

语法:

第一种:$(选择器).animate({运动参数},speed[400],easing,callback)

第二种:$(选择器).animate({运动参数},{options})

​ duration - 设置动画的速度
​ easing - 规定要使用的 easing 函数
​ callback - 规定动画完成之后要执行的函数
​ step - 规定动画的每一步完成之后要执行的函数
queue - 布尔值。指示是否在效果队列中放置动画。如果为 false,则动画将立即开始
​ specialEasing - 来自 styles 参数的一个或多个 CSS 属性的映射,以及它们的对应 easing 函数

        //1.动画队列,每一个animate都会主动加入动画队列,然后按顺序进行动画
        $("div").animate({"width":500});
        $("div").animate({"height":500}); //先运动宽再运动高

        //2.同时运动     
        $("div").animate({"width":500,"height":500});

        //3.累加 
        $("div").click(function(){
            $("div").animate({
                "left":"+=50";//点击一下div,div向右移动50px
            })    
        }) 

        //4.show  hide toggle 这些关键字可以直接作为目标值
        $("div").animate({"width":"toggle"});

        //5.动画连缀,css不是动画,不会加入动画队列,会跟队列中的第一个动画一起执行
        $("div").animate({"width":500})
                .animate({"height":500})
        $("div").css("background","green");
                    
        //6.若想要css效果按照顺序执行有两种方法
          //1.放在回调函数里
            $("div").animate({"width":500})
                .animate({"height":500},function(){
                    $("div").css("background","green");
             })
          //2.通过queue()函数解决
            $("div").animate({"width":500})
                .animate({"height":500})
                .queue(function(){
                    $("div").css("background","green");
                })
                .animate({"opacity":0.3});//透明度不会执行,都等着用queue()函数来排队
          //3.解决上述问题
            $("div").animate({"width":500})
                .animate({"height":500})
                .queue(function(next){ //传入一个参数
                    $("div").css("background","green");
                    //$("div").dequeue(); //出队  不建议使用
                    next();//保证在执行完这次队列后再执行队列中的下一个动画函数
                })
                .animate({"opacity":0.3})
 
queue - 布尔值。指示是否在效果队列中放置动画。如果为 false,则动画将立即开始

//先运动宽再运动高最后运动透明度
$("div").animate({"width":500},{
         "duration":1000
     });
     $("div").animate({"height":500},{
         "duration":1000
     });

     $("div").animate({"opacity":0.4},{
         "duration":1000
     });

//若加上queue:false

$("div").animate({"width":500},{
         "duration":1000,
         "queue":false   //宽高一起运动,就是允许在运动宽的时候运动高
     });
     $("div").animate({"height":500},{
         "duration":1000
     });

     $("div").animate({"opacity":0.4},{
         "duration":1000
     });
8.停止元素的动画

语法:$().stop(clearQueue,gotoEnd)

参数:

clearQueue:是否清除动画队列中的所有动画

默认是false:停止当前正在运动的动画,其他动画继续运行,true:停止所有动画

gotoEnd:停止动画的时候,当前正在运动的动画是否立刻到达目标点

默认是false:立刻停止,true:立刻到达目标点

<button>开始动画</button>
<button>结束动画</button>
<div></div>
$("button:eq(0)").click(function(){
            $("div").animate({"width":500},1000);
            $("div").animate({"height":500},1000);
        })

$("button:eq(1)").click(function(){
            $("div").stop(false,true);
            $("div").stop();//没有参数的时候,默认只停止当前正在进行的运动,后续的运动继续
        })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值