jq: 事件-鼠标

点击

在js中,绑定事件函数要具体到元素,如

        <ul>
    <li>1</li>
    <li>2</li>
</ul>
<script>
    var li0 = document.getElementsByTagName('li')[0];
    li0.onclick = function() {
        console.log(this.innerText)
    }
</script>
      

v2-3fa4050fa7fd84d8fd8465d6b877cffe_b.jpg



所以在jq中同理,可以利用this,点击谁,获取谁的元素,再放入到jq对象即可使用对应的方法,如:

        <ul>
    <li>1</li>
    <li>2</li>
</ul>
<script src="../jquery-3.4.1.js"></script>
<script>
    $('li').click(function() {
        console.log($(this).text());
    })
</script>
      

v2-3f5681f2c567f3ed59738fa07483a02d_b.gif



事件函数中的event参数

event.pageX 获取浏览器到当前的x轴位置

event.pageY 获取浏览器到当前的y轴位置

        $('.item').click(function(e) {
    console.log(`x轴位置:${e.pageX} y轴位置:${e.pageY} `);
})

      

v2-2e1fe53805e7688f04076c0f73b77f1c_b.jpg


event.which 判断点击的左键 中键 右键

event.which = 1 鼠标左键

event.which = 2 鼠标中键

event.which = 3 鼠标右键

contextmenu = false 函数可以取消右键菜单弹出

        $(document).contextmenu(function() { // 防止右键菜单弹出
    return false;
})

$(document).mousedown(function(e) {
    console.log(e.which);
})

      





click 单机事件

dblclick 双击事件


移动

mouseenter/mouseleave 鼠标进入/鼠标离开

        $('.item').mouseenter(function() {
    console.log('鼠标移入')
}).mouseleave(function() {
    console.log('鼠标移出')
})

      

v2-0cba8e500072964d609f7204b1b9dfe2_b.gif

是否冒泡: 不冒泡

        $('.item').mouseenter(function() {
    console.log('item鼠标移入')
}).mouseleave(function() {
    console.log('item鼠标移出')
})

$('.box').mouseenter(function() {
    console.log('box鼠标移入')
}).mouseleave(function() {
    console.log('box鼠标移出')
})

      

v2-b3ecaee2c025bbdd1fa41aa10dd61aa4_b.gif



mouseover/mouseout 鼠标进入/鼠标离开(会冒泡)

        $('.item').mouseover(function() {
 console.log('item鼠标移入')
}).mouseout(function() {
 console.log('item鼠标移出')
})

$('.box').mouseover(function() {
 console.log('box鼠标移入')
}).mouseout(function() {
 console.log('box鼠标移出')
})

      

v2-4c2513d68fa2e55f980efd8ca80e1e3d_b.gif

v2-19fa561590de35c0ca96cc77e51004f7_b.gif

鼠标进入item中,触发冒泡,box的进入事件函数也被调用。

鼠标离开item中,触发冒泡,box的离开事件也被调用,然后进入到了box区域中(因为依然还在这里)。


mousedown 鼠标按下

mouseup 鼠标抬起

拖拽:

        <style>
     .item {
           position: relative;
           width: 100px;
           height: 100px;
           background: orange;
        }
</style>
</head>
<body>
<div class="item">test</div>
<script src="../jquery-3.4.1.js"></script>
<script>
 $('.item').mousedown(function(e) {
      var offset = $(this).offset();  // 定义盒子的边框
      var dis = {};                   // 创建一个存放鼠标到盒子边框的位置
      dis.x = e.pageX - offset.left;  // 鼠标到盒子左边距离
      dis.y = e.pageY - offset.top;   // 鼠标到盒子右边距离
      var _this = this;               // 盒子的this
      $(document).mousemove(function(e) {
           $(_this).css({              // 盒子的样式
                left: e.pageX - dis.x, // 移动到新位置 - 鼠标到盒子的距离 = 盒子定位的位置
                top: e.pageY - dis.y,
                })
            }).mouseup(function() {         // 鼠标抬起后
      $(this).off('mousemove mouseup') // 取消移动和抬起事件
            })
           return false; // 防止文字被选中
        })
    </script>
      

v2-29437f5132596683763ef017543ea350_b.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值