事件对象和绑定事件

事件对象:

event事件对象:每一个事件方法都有一个默认的参数,表示事件对象。(IE8的适配:let e = ev || window.event)

获取鼠标位置:

clientX和clientY:相对于浏览器可视窗口左上角原点

screenX 和screenY:相对于电脑屏幕的左上角

pageX  和 pageY:相对于页面文档流左上角原点

offsetX  和 offsetY:相对于触发事件的元素

事件绑定有两种方式:

1、传统绑定事件方式:on...

// 同一个元素,同一个事件,只能处理最后一个绑定的一个事件
// 之前的会被覆盖
btn[0].onclick = () => {
     console.log('大家好,我是渣渣辉!');
}
btn[0].onclick = () => {
     console.log('是兄弟就来砍我');
}

2、监听绑定事件方式:addEventListener(‘事件类型名(无on)’,函数)

// 同一个元素,同一个事件,可以绑定多个监听事件,而且会依次执行
btn[1].addEventListener('click', function () {
     console.log('我信你个鬼');
})
btn[1].addEventListener('click', function () {
     console.log('你个糟老头子坏得很');
})
// 删除监听函数     removeEventListener
// 注:想要删除,就不要写匿名函数
// 是在运行一次后再次触发时才会进行删除

小练习:鼠标移动提示框

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>鼠标移动提示框</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        a {
            display: block;
            width: 100px;
            margin: 50px;
            text-align: center;
            background-color: yellowgreen;
        }

        #div_js {
            width: 200px;
            height: 200px;
            background-color: aqua;
            display: none;
            position: absolute;
        }
    </style>
</head>

<body>
    <a href="#">简介1</a>
    <a href="#">简介2</a>
    <a href="#">简介3</a>
    <a href="#">简介4</a>
    <div id="div_js"></div>
    <script>
        let arr_js = ['我是简介1的内容', '我是简介2的内容', '我是简介3的内容', '我是简介4的内容'];
        let as = document.querySelectorAll('a');
        let div = document.getElementById('div_js');
        for (let i = 0; i < as.length; i++) {
            // 获取下标
            as[i].index = i;
            // 移入显示
            as[i].onmouseover = function () {
                // 数组中的内容添加到div中
                div.innerHTML = arr_js[this.index];
                div.style.display = 'block';
            }
            // 移出消失
            as[i].onmouseout = () => {
                div.style.display = 'none'
            }
            // 事件对象,添加鼠标移动事件
            as[i].onmousemove = function (ev) {
                let e = ev || window.event
                // 让div跟着鼠标移动,让div和鼠标的位置有点间距
                div.style.left = e.clientX + 10 + 'px';
                div.style.top = e.clientY + 10 + 'px';
            }
        }
    </script>
</body>

</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 DelegateCommand 中获取按钮对象事件对象,可以使用 CommandParameter 参数和 RoutedEventArgs 类型的参数。CommandParameter 允许我们将任何对象传递给命令的 Execute 和 CanExecute 方法中,而 RoutedEventArgs 类型的参数则是鼠标事件的参数类型。 以下是鼠标点击事件、获取按钮对象事件对象的示例代码: 1. 在 XAML 中,将按钮的 Command 属性为 DelegateCommand 类型的 MyCommand 属性,并设置 CommandParameter 参数为按钮本身。例如: ``` <Button Content="Click me" Command="{Binding MyCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Self}}" /> ``` 2. 在 ViewModel 中,获取按钮对象事件对象,并进行操作。例如: ``` public DelegateCommand MyCommand { get; private set; } public MyViewModel() { MyCommand = new DelegateCommand(ExecuteMyCommand); } private void ExecuteMyCommand(object parameter) { Button clickedButton = parameter as Button; RoutedEventArgs eventArgs = Mouse.PrimaryDevice.ActiveSource.CurrentInputReport.InputSource.CurrentEventArgs as RoutedEventArgs; // 在这里对 clickedButton 和 eventArgs 进行操作 } ``` 在这个示例中,我们将按钮本身作为 CommandParameter 参数传递给了 MyCommand 命令,并在 ExecuteMyCommand 方法中将其转换为 Button 对象。同时,我们通过 Mouse.PrimaryDevice.ActiveSource.CurrentInputReport.InputSource.CurrentEventArgs 属性获取了当前鼠标事件的参数,并将其转换为 RoutedEventArgs 类型的对象。这样,我们就可以同时获取按钮对象事件对象,并对它们进行操作了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值