简单方式注册/移除事件
注册:jq对象 .on(‘事件名 例如click’,‘事件处理程序’)
移除:jq对象.off(‘事件名’,‘事件处理程序’)
事件处理程序在如果需要移除 就要单独写出来 然后调用就可以 个人感觉还是写外面吧。。万一我想移除了呢= =
另外 如果给一个元素多次注册事件 也不会被叠加 因为他的底层本质是事件监听
事件委托方式注册/移除事件
在写之前还是先回顾一下事件委托吧。。。
什么是事件委托呢 事件委托 就是为了优化程序 提升程序的性能 在事件类型一样的时候 可以把子孙元素委托给上级元素
在原生js中 实现事件委托很麻烦 emmm
步骤如下:
给上级元素注册添加事件
2.通过事件对象.属性 例如 target 哪个点击了 事件对象.target就代表谁 (可以说事件委托的核心就是target)
3.可以选择用nodeName或者类名className 去检测触发的是哪个元素 或者触发的是不是指定元素 注意 在获取nodeName的时候 是要去找全部大写的节点名
可以根据属性和属性值去判断点击的是不是这个元素
注册:jq对象【被委托干活的】.on(‘事件名’,‘选择器’,‘事件处理程序’)
其中 jq对象是那个被委托干活的 事件名是例如 click 这种的 选择器 是派活给jq对象的 事件处理程序还是和上面一样 要移除的话就写外面 里面调用
移除:jq对象.off(‘事件名’,‘选择器’,‘事件处理程序’)
在原生js里的 e.target 在jQuery里 用this表示
只有点击选择器指定的元素 才会执行下面的代码
模拟触发事件tigger(‘事件名’)
语法:jq对象.tigger(‘事件名’)
其实和直接的.click没啥区别 可能主要的区别就是 可以在console里写jq需要被触发的对象.tigger模拟触发(‘事件名’)
事件对象
事件对象。。大概就是e event了吧。。。。和原生js一样
鼠标键盘事件和原生js差不多
鼠标事件:
参照浏览器:事件对象.clientX/Y
参照文档:事件对象.pageX/Y
参照元素:事件对象.offsetX/Y
键盘事件:
事件对象.keyCode 返回键码值
事件对象:alt/shift/ctrlKey 返回布尔值 检测是否按下
网友评论