JavaScript Event事件对象

1. Event对象属性

1.1 Event.currentTarget和Event.target

Event.currentTarget属性返回事件当前所在的节点,即正在执行的监听函数所绑定的那个节点。

Event.target属性返回原始触发事件的那个节点,即事件最初发生的节点。

事件传播过程中,不同节点的监听函数内部的Event.target与Event.currentTarget属性的值是不一样的,前者总是不变的,后者则是指向监听函数所在的那个节点对象。

<head>
    <style>
        #myDiv{
            background-color: red; 
            width: 100px; 
            height: 100px;
        }
    </style>
</head>
<body>
    <div id="myDiv">
        <button id="myButton">button</button>
    </div>
    <script>
        myDiv = document.getElementById("myDiv");
        myButton = document.getElementById("myButton");
        // 事件冒泡流,先button后div
        myDiv.onclick = function(e){
            console.log(e.currentTarget);    // <div id="myDiv">…</div>
            console.log(e.target);    // <button id="myButton">button</button>
        };
        myButton.onclick = function(e){
            console.log(e.currentTarget);    // <button id="myButton">button</button>
            console.log(e.target);    // <button id="myButton">button</button>
        };
    </script>
</body>

 使用target属性获得并操作元素的属性:

<body>
    <p id="myP">myP</p>
    <script>
        var myP = document.getElementById("myP");
        myP.onclick = function(e){
            e.target.innerHTML = "myNewP";
            e.target.style.color = "red";
        };
    </script>
</body>

1.2 Event.type

Event.type属性返回一个字符串,表示事件类型。事件的类型是在生成事件的时候。该属性只读。

<body>
    <button id="myButton">button</button>
    <script>
        myButton = document.getElementById("myButton");
        myButton.onclick = function(e){
            console.log(e.type);    // click
        };
    </script>
</body>

2. Event对象方法

2.1 Event.preventDefault()

Event.preventDefault方法取消浏览器对当前事件的默认行为。比如点击链接后,浏览器默认会跳转到另一个页面,使用这个方法以后,就不会跳转了。

<body>
    <a href="www.baidu.com" id="myA">跳转</a>
    <script>
        myA = document.getElementById("myA");
        myA.onclick = function(e){
            e.preventDefault(); // 阻止默认事件
        };
    </script>
</body>

2.2 Event.stopPropagation()

stopPropagation方法阻止事件在 DOM 中继续传播,防止再触发定义在别的节点上的监听函数,但是不包括在当前节点上其他的事件监听函数。

2.2.1 防止事件冒泡流

<head>
    <style>
        #myDiv{
            background-color: red; 
            width: 100px; 
            height: 100px;
        }
    </style>
</head>
<body>
    <div id="myDiv">
        <button id="myButton">button</button>
    </div>
    <script>
        myDiv = document.getElementById("myDiv");
        myButton = document.getElementById("myButton");
        myDiv.onclick = function(e){
            console.log("myDiv");
        };
        myButton.onclick = function(e){
            console.log("myButton");
            e.stopPropagation();    // 阻止事件冒泡
        };
    </script>
</body>

2.2.2 防止事件捕获流

<head>
    <style>
        #myDiv{
            background-color: red; 
            width: 100px; 
            height: 100px;
        }
    </style>
</head>
<body>
    <div id="myDiv">
        <button id="myButton">button</button>
    </div>
    <script>
        myDiv = document.getElementById("myDiv");
        myButton = document.getElementById("myButton");
        myDiv.addEventListener('click',function(e){
            console.log("myDiv");
            e.stopPropagation();    // 防止事件捕获
        },true);
        myButton.addEventListener('click',function(e){
            console.log("myButton");
        },true);
    </script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值