jQuery的事件

事件

1 事件对象

添加事件:$().事件方法(事件处理函数)

$(window).click(function(ev){
    //1.事件对象,jQuery通过事件处理函数的参数获取,已经做好了兼容
    //console.log(ev); //jQuery.Event
    //console.log(ev.originalEvent); //原生事件对象

    //2.事件对象属性
    console.log(ev.clientX+"-----"+ev.clientY); //鼠标位置,相对于可视区
    console.log(ev.keyCode); //按键编码
    console.log(ev.shiftKey,ev.ctrlKey,ev.altKey); //有没有按,按了-true  没按-false
});

$("a").click(function(ev){
    ev.stopPropagation(); //阻止事件冒泡
    ev.preventDefault(); //阻止默认行为
    console.log("被点击了");
})

2 事件绑定

2.1 原生js的事件绑定
  • 绑定
    • 标准浏览器:标签.addEventLister(事件类型,事件处理函数,是否捕获)
    • IE浏览器:标签.attachEvent(事件类型,事件处理函数)
  • 取消
    • 标准浏览器:标签.removeEventLister(事件类型,事件处理函数,是否捕获)
    • IE浏览器:标签.detachEvent(事件类型,事件处理函数)
4.2.2 jquery的事件绑定
  • 绑定事件:on

    • 普通事件添加:$().on(事件类型,事件处理函数)

      //1.不会覆盖,可以叠加
      $("div").on("click",week1);
      $("div").on("click",week2);
      
      //2.可以多个不同事件添加同一个事件处理函数
      $("div").on("click mouseover",week1);
      
      //3.同时添加多个事件
      $("div").on({
          "click":week1,
          "mouseover":week2
      });
      
      //4.可以自定义事件
      $("div").on("classover",function(){
          console.log("睡觉看奥特曼,梦里啥都有");
      });
      
      //触发自定义事件
      setTimeout(function(){
          $("div").trigger("classover");
      },2000);
      
      
      //5.命名空间,如果项目足够大,或者引入了大量的第三个库,可能会出来命名冲突
      var index = {}; 
      index.name = "首页";
      
      var detail = {};
      detail.name = "详情页";
      
      
      $("div").on("click.txf",week1);
      $("div").on("click.ujiuye",week2);
      
    • 事件绑定添加:$().on(type,子元素选择器,事件处理函数)

      //将事件添加给父元素,当子元素事件触发的时候,会通过事件冒泡传递到父元素
      //特点:提高性能,事件可以发生在未来
      //$().on(type,子元素选择器,事件处理函数)
      $("ul").on("click","li",function(){
          console.log(this); //this指向触发事件的子元素
          $(this).css("background","green").siblings().css("background","");
      });
      
      $("ul").append("<li>下课</li>")
      
  • 取消事件:off 所有形式添加的事件都可以通过off方法取消

    //取消:$().off(事件类型,事件处理函数)
    //$("div").off(); //默认清除这个标签上的所有事件
    //$("div").off("click"); //清除标签上所有的点击事件
    $("div").off("click",week1); //清除这一个
    
  • 一次性事件

     //一次性事件语法:$().one(事件类型,事件处理函数)
    var arr = ["1600压岁钱","对象","1060显卡","苹果全套"];
    $("button").one("click",function(){
        console.log(arr[Math.floor(Math.random()*arr.length)]);
    });
    
  • 组合事件

     $("div").hover(function(){
         //移入执行代码
         $("div").css("width",200)
     },function(){
         //移出执行代码
         $("div").css("width",100)
     })
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值