zoukankan      html  css  js  c++  java
  • jQuery事件

    1. 事件绑定(2种):

      * eventName(function(){})

        绑定对应事件名的监听,        例如:$('#div').click(function(){});

      * on(eventName, funcion(){})

        通用的绑定事件监听, 例如:$('#div').on('click', function(){})

      * 优缺点:

        eventName: 编码方便, 但只能加一个监听, 且有的事件监听不支持

        on: 编码不方便, 可以添加多个监听, 且更通用

    2. 事件解绑:

      * off(eventName)

    3. 事件的坐标

      * event.clientX, event.clientY  相对于视口的左上角

      * event.pageX, event.pageY  相对于页面的左上角

      * event.offsetX, event.offsetY 相对于事件元素左上角

    4. 事件相关处理

      * 停止事件冒泡 : event.stopPropagation()

      * 阻止事件默认行为 : event.preventDefault()

    ///////////////////////////练习/////////////////////////////////////////////////////////////

      //1. 给.out绑定点击监听(用两种方法绑定)

      /*$('.out').click(function () {

       console.log('click out')

       })*/

      $('.out').on('click', function () {

        console.log('on click out')

      })

      //2. 给.inner绑定鼠标移入和移出的事件监听(用3种方法绑定)

      /*

       $('.inner')

       .mouseenter(function () { // 进入

        console.log('进入')

       })

       .mouseleave(function () { // 离开

       console.log('离开')

       })

       */

      /*

       $('.inner')

       .on('mouseenter', function () {

       console.log('进入2')

       })

       .on('mouseleave', function () {

       console.log('离开2')

       })

       */

      $('.inner').hover(function () {

        console.log('进入3')

      }, function () {

        console.log('离开3')

      })

      //3. 点击btn1解除.inner上的所有事件监听

      $('#btn1').click(function () {

        $('.inner').off()

      })

      //4. 点击btn2解除.inner上的mouseenter事件

      $('#btn2').click(function () {

        $('.inner').off('mouseenter')

      })

      //5. 点击btn3得到事件坐标

      $('#btn3').click(function (event) { // event事件对象

        console.log(event.offsetX, event.offsetY) // 原点为事件元素的左上角

        console.log(event.clientX, event.clientY) // 原点为窗口的左上角

        console.log(event.pageX, event.pageY) // 原点为页面的左上角

      })

      //6. 点击.inner区域, 外部点击监听不响应

      $('.inner').click(function (event) {

        console.log('click inner')

        //停止事件冒泡

        event.stopPropagation()

      })

      //7. 点击链接, 如果当前时间是偶数不跳转

      $('#test4').click(function (event) {

        if(Date.now()%2===0) {

          event.preventDefault()

        }

      })

    区别mouseover与mouseenter?

            * mouseover: 在移入子元素时也会触发, 对应mouseout

            * mouseenter: 只在移入当前元素时才触发, 对应mouseleave

                                                                       hover()使用的就是mouseenter()和mouseleave()

    区别on('eventName', fun)与eventName(fun)

            * on('eventName', fun): 通用, 但编码麻烦

            * eventName(fun): 编码简单, 但有的事件没有对应的方法

    ////////////////////////////////////事件的委托/////////////////////////////////////////////

    1. 事件委托:

      * 将多个子元素(li)的事件监听委托给父辈元素(ul)处理

      * 监听回调是加在了父辈元素上

      * 当操作任何一个子元素(li)时, 事件会冒泡到父辈元素(ul)

      * 父辈元素不会直接处理事件, 而是根据event.target得到发生事件的子元素(li), 通过这个子元素调用事件回调函数

    2. 事件委托的2方:

      * 委托方: 业主  li

      * 被委托方: 中介  ul

    3. 使用事件委托的好处

      * 添加新的子元素, 自动有事件响应处理

      * 减少事件监听的数量: n==>1

    4. jQuery的事件委托API

      * 设置事件委托: $(parentSelector).delegate(childrenSelector, eventName, callback)

      * 移除事件委托: $(parentSelector).undelegate(eventName)

  • 相关阅读:
    Android环境说明 与 屏幕尺寸问题
    关于修改Visual Studio 2010 Ultimate RC的密钥
    安装Office 2010是出现windows installer服务不能更新一个或多个受保护的windows文件 错误
    Sharepoint 2010和阿里通进行集成完成短信通知功能
    用visual studio 2010 打开winform程序 时 无法运行 的解决方案
    一次尴尬的招聘经历
    TFS里的MSB3021错误
    程序员是强者
    修改密码导致应用程序池无法启动
    远离客户开发陷阱(转)
  • 原文地址:https://www.cnblogs.com/love-life-insist/p/9063696.html
Copyright © 2011-2022 走看看