• jQuery事件操作


    bind绑定事件

     1 bind(type,data,fn)
     2  【参数描述】
     3  type (String) : 事件类型
     4  data (Object) : (可选) 作为event.data属性值传递给事件对象的额外数据对象
     5  fn ( Function) : 绑定到每个匹配元素的事件上面的处理函数
     6  // bind 参数都是选传的,接收参数e.data
     7  $('button').bind('click',{'a':'b'},fn)
     8  function fn(e) {
     9     console.log(e.data)
    10     console.log(e.data.a)
    11     }
    12      
    13  $('button').bind('click',fn)
    14  function fn(e) {
    15     console.log('wahaha')
    16  }
    17 18  // 简写的事件名称当做方法名
    19  $('button').click({'a':'b'},fn)
    20  function fn(e) {
    21     console.log(e.data)
    22     console.log(e.data.a)
    23     }
    24      
    25  $('button').click(fn)
    26  function fn(e) {
    27     console.log('wahaha')
    28  }

    解绑事件

    $(选择器).unbind(type,fn);
     ​
     【参数说明】
     type (String) : (可选) 事件类型
     fn(Function) : (可选) 要从每个匹配元素的事件中反绑定的事件处理函数
     ​
     【描述】
     1. bind()的反向操作,从每一个匹配的元素中删除绑定的事件。
     2. 如果没有参数,则删除所有绑定的事件。
     3. 如果把在绑定时传递的处理函数作为第二个参数,则只有这个特定的事件处理函数会被删除。

    常见事件

     click(function(){...})   // 单机事件
     ​
     blur(function(){...})   // 失去焦点
     focus(function(){...})   // 获得焦点
     ​
     change(function(){...})  // input框鼠标离开时内容改变触发
     ​
     keyup(function(){...})   // 按下的键盘触发事件 27对应的是esc键 获取键盘编号 e.keyCode
     mouseover/mouseout       // 如果给父元素绑定了over事件,那么这个父元素如果有子元素,每一次进入子元素也   触发父元素的over事件
     mouseenter/mouseleave = hover(function(){...})  //鼠标的悬浮

    事件冒泡

    在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。

     1 <style>
     2         .outer{
     3             width: 300px;
     4             height: 300px;
     5             background-color: red;
     6         }
     7         .inner{
     8             width: 100px;
     9             height: 100px;
    10             background-color: forestgreen;
    11         }
    12     </style>
    13 14  <body>
    15     <div class="outer">
    16         <div class="inner"></div>
    17     </div>
    18  </body>
    19 20  <script>
    21     $('.outer').click(
    22         function () {
    23             alert('outer')
    24         })
    25     $('.inner').click(
    26         function (e) {
    27             alert('inner')
    28             // e.stopPropagation() //阻止事件冒泡方法1
    29             return false   //阻止事件冒泡方法2
    30         })
    31  </script>

    常用的组织事件冒泡的方式

    【方式一】通过返回false来取消默认的行为并阻止事件起泡。

     举例:
      $("form").bind("submit", function() { return false; }) 

    【方式二】通过event.preventDefault() 方法阻止事件起泡

     举例:
     $("form").bind("submit", function(event){
      event.stopPropagation();
     }); 

    事件委托

    原理:利用冒泡的原理,把事件加到父级上,触发执行效果。

    作用:

    1.性能要好 ​ 2.针对新创建的元素,直接可以拥有事件

    事件源 :

      跟this作用一样(他不用看指向问题,谁操作的就是谁),event对象下的

    使用情景:

    • 为DOM中的很多元素绑定相同事件;

    • 为DOM中尚不存在的元素绑定事件;

    语法:

     on(events,selector,data,fn);
     events( String) : 一个或多个空格分隔的事件类型
     selector( String) : 一个选择器字符串,用于过滤出被选中的元素中能触发事件的后代元素
     data: 当一个事件被触发时,要传递给事件处理函数的event.data。
     fn:回调函数
     ​
     ******这里一定要注意的是,selector,这里是放选择器,不是放jQuery对象******

    【举例】

     $('div').on('click','button',{'a':'b'},function (event) {
            console.log(event.data)
            alert('不许点')
        })
     相当于把button元素的点击事件委托给了父元素div
     后添加进来的button也能拥有click事件

    页面加载

     1 document.onload = function(){
     2     //js 代码 
     3  }
     4  window.onload = function () {
     5             $('button').click(function () {
     6             alert('不许点')
     7             })
     8  }
     9  onload要等到所有的文档 音视频都加在完毕才触发
    10  onload只能绑定一次
    11 12  //jquery的方式,只等待文档加载完毕之后就可以执行,在同一个html页面上可以多次使用
    13  $(document).ready(
    14       function () {
    15         //文档加在完毕之后能做的事情 
    16  })
    17 18  //jquery的方式(简写)*****
    19  $(function () {
    20   //文档加在完毕之后能做的事情        
    21   })
    22 23  //示例
    24  $(function () {
    25       $('button').click(function () {
    26           alert('不许点')
    27       })
    28  })
    29 30  //jquery中等待所有的资源包括视频 音频都加载完才执行function中的代码,可以使用多次
    31  $(window).ready(
    32       function () {
    33             alert('123')
    34  })

    each

    each() 方法规定为每个匹配元素规定运行的函数。

    jQuery提供的each方法是对参数中所有的子元素逐一进行方法调用。而jQuery对象提供的each方法则是对jQuery内部的子元素进行逐个调用。

     1  语法结构
     2  $(selector).each(function(index,element))
     3  【举例】
     4  <body>
     5     <ul>
     6         <li>选项一</li>
     7         <li>选项二</li>
     8         <li>选项三</li>
     9     </ul>
    10  </body>
    11  <script>
    12     $('li').each(
    13         function (ind,dom) {     //主动传ind是每项的索引,dom是每一项的标签对象
    14             console.log(ind,dom)
    15         }
    16     )
    17  </script>
    仅供参考,欢迎指正
  • 相关阅读:
    C#添加修改删除文件文件夹大全
    实用且不花哨的js代码大全
    vs2005 2008快捷键
    C#:String.Format数字格式化输出
    获取农历日期
    Vim 常用快捷键
    一个简单的makefile示例及其注释
    nginx源码剖析(1)概要
    利用Vim 打造开发环境(一)>Linux 字符界面 vim的配置
    Ubuntu 9.10设置摘要
  • 原文地址:https://www.cnblogs.com/jjzz1234/p/11415497.html
Copyright © 2020-2023  润新知