webapi-方法监听-事件流-事件委托-常用鼠标键盘事件

目录

事件高级

1.传统的注册事件的方式特点

2.方法监听注册方式特点

1.方法监听的语法:

 2.解绑事件

3.Dom事件流

4.事件对象

5.this和target的区别

6.阻止默认事件

8.事件委托

9.常用的鼠标事件

1.禁止鼠标右键菜单 

 2.禁止鼠标选中

3.鼠标移动 离开

10.常用的键盘事件


事件高级

事件注册:给元素添加事件或绑定事件

注册事件的方式有两种:传统注册方式 和 方法监听注册方式

1.传统的注册事件的方式特点

  1. 事件类型以on开头
  2. 唯一性
  3. 同一个元素的同一个事件只能绑定一次。多了会被下面的覆盖

2.方法监听注册方式特点

  1. 是W3c推荐的
  2. addEventListener()他是一个方法
  3. IE9之前不支持
  4. 统一元素同意事件可以注册多个监听器。
  5. 按照注册的顺序执行。

1.方法监听的语法:

  btn.addEventListener('事件类型', function(){

执行内容
});

 2.解绑事件


<body>
    <button>按钮</button>
    <script>
        var btn = document.querySelector('button');
        btn.addEventListener('click', fn);

        function fn() {
            alert('我只出现一次');
            btn.removeEventListener('click', fn)

        }
    </script>
</body>

3.Dom事件流

事件流描述的是从页面中接收事件顺序。

  1. 捕获阶段(由上往下传播)
  2. 目标阶段(找到目标)
  3. 冒泡阶段(由下往上反应)

4.事件对象

    

   document.addEventListener('click', function(e) {//e 就是事件对象
            console.log(e.pageX);
        });

我们可以把事件对象看作是一个形参,但是它不需要传递形参。他是事件的一系列相关数据的集合,跟事件相关(‘click’)如鼠标点击里会包含鼠标的相关信息,坐标等等

5.this和target的区别

target返回的是触发事件的对象,通俗来说就是点击的对象。

this是返回的绑定事件的对象。

6.阻止默认事件

e.prevenDefult()

 var as = document.querySelector('a');
        as.addEventListener('click', function(e) {
            e.preventDefault();
           
        })

7.阻止冒泡

e.stopperpropagation ()


<body>
    <div class="father">
        <div class="son">son儿子</div>
    </div>
    <script>
        // 常见事件对象的属性和方法
        // 阻止冒泡  dom 推荐的标准 stopPropagation() 
        var son = document.querySelector('.son');
        son.addEventListener('click', function(e) {
            alert('son');
            e.stopPropagation(); // stop 停止  Propagation 传播
            e.cancelBubble = true; // 非标准 cancel 取消 bubble 泡泡
        }, false);

        var father = document.querySelector('.father');
        father.addEventListener('click', function() {
            alert('father');
        }, false);
        document.addEventListener('click', function() {
            alert('document');
        })
    </script>

8.事件委托

概念:不是每个子节点单独设置事件监听,而是事件监听器设置在他们的父亲身上。然后利用冒泡原理影响每个子盒子。

注意:在事件委托里,可以用e.target获取当前点击的元素。

   <!-- 事件委托 只给ul设置的点击弹出   但当我点击li的时候也会弹出 这就是利用里冒泡  -->
    <!-- 就是当我的子元素都需要这个属性的时候 我可以把这个属性嫁给他的父亲 让他向下传播 就不用每一个 li都绑定事件了 -->
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>

    <script>
        var ul = document.querySelector('ul');
        var lis = document.querySelectorAll('li');

        ul.addEventListener('click', fn);

        function fn(e) {
            // alert(`哈哈哈,`)
            for (var i = 0; i < lis.length; i++) {
                lis[i].style.background = ''
            }
            e.target.style.background = 'pink'
        }
    </script>

9.常用的鼠标事件

1.禁止鼠标右键菜单 

contextmenu 配合阻止默认事件使用

 2.禁止鼠标选中

selectstart 配合阻止默认事件使用

<body>
    <div>哈哈哈我是一段不能被选中的文字</div>
    <script>
        //1.禁用鼠标右键菜单 contextmenu
        document.addEventListener('contextmenu', function(e) {
                e.preventDefault();
            })
            //2.禁止鼠标选中 selectstart
        document.addEventListener('selectstart', function(e) {
            e.preventDefault();
        })
    </script>

3.鼠标移动 离开

mousemove鼠标移动

mouseover 鼠标经过

mouseout  离开

mouseenter 鼠标经过 跟上面的区别是不会冒泡

mouseleave 鼠标离开 跟上面的区别是不会冒泡

10.常用的键盘事件

keyup 键盘弹起

keydown 键盘按下 不识别大小写

keypress 键盘按下 跟down的区别是不识别功能键 识别大小写

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值