1. 程式人生 > >每日分享!JavaScript的鼠標事件(11個事件)

每日分享!JavaScript的鼠標事件(11個事件)

菜單 htm 按鈕 lan pat contex set lang strong

鼠標的11個事件

具體的事件解釋如下:

  • click:按下鼠標(通常是按下主按鈕)時觸發。
  • dblclick:在同一個元素上雙擊鼠標時觸發。
  • mousedown:按下鼠標鍵時觸發。
  • mouseup:釋放按下的鼠標鍵時觸發。
  • mousemove:當鼠標在一個節點內部移動時觸發。當- 鼠標持續移動時,該事件會連續觸發。為了避免性能問題,建議對該事件的監聽函數做一些限定,比如限定一段時間內只能運行一次。
  • mouseenter:鼠標進入一個節點時觸發,進入子節點不會觸發這個事件(詳見後文)。
  • mouseover:鼠標進入一個節點時觸發,進入子節點會再一次觸發這個事件(詳見後文)。
  • mouseout:鼠標離開一個節點時觸發,離開父節點也會觸發這個事件(詳見後文)。
  • mouseleave:鼠標離開一個節點時觸發,離開父節點不會觸發這個事件(詳見後文)。
  • contextmenu:按下鼠標右鍵時(上下文菜單出現前)觸發,或者按下“上下文菜單鍵”時觸發。
  • wheel:滾動鼠標的滾輪時觸發,該事件繼承的是WheelEvent接口。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        div {
            margin: 30px;
            width: 100px;
            height: 100px;
            background-color: red;
        }

        h4 {
            color: #fff;
            margin: 0;
            padding: 0;
        }

        .box {
            margin: 20px;
            width: 30px;
            height: 30px;
            background-color: pink;
        }
    </style>
</head>
<button id="btn1">click</button>
<button id="btn2">dblclick</button>
<button id="btn3">mousedown</button>
<button id="btn4">mouseup</button>
<div id="btn6">
    <h4>mouseenter</h4>
    <h4>mouseover</h4>
    <div class="box"></div>
</div>

<div id="btn7">
    <h4>mouseout</h4>
    <div class="box"></div>
</div>

<div id="btn8">
    <h4>mouseleave</h4>
    <div class="box"></div>
</div>

<div id="btn9">
    <h4>contextmenu</h4>
    <div class="box"></div>
</div>

<body>
    <script>
        // 事件1 click : 按下鼠標即可以觸發
        btn1.addEventListener('click', function () {
            alert('click')
        })
        // 事件2 dblclick : 雙擊鼠標可以觸發事件  notice: 是dblclick
        btn2.addEventListener('dblclick', function () {
            alert('dbclick')
        }, { once: true })   // 加啦once 只會觸發一次。。。
        // 事件3 mousedown  按下鼠標鍵時觸發 notice:此時我們監聽的是對於按鈕按下鼠標鍵才會觸發
        btn3.addEventListener('mousedown', function () {
            alert('mousedown')
        })
        // 事件4 mouseup  // 點擊按鈕釋放鼠標鍵時才會觸發 
        btn4.addEventListener('mouseup', function () {
            alert('btn-mouseup')
        })
        // 事件4 mouseup  // 釋放鼠標鍵時將會觸發  那就綁定為document的全局事件
        document.addEventListener('mouseup', function () {
            alert('mouseup')
        })   // notice 在為看來,不要在全局綁定這樣的事件,這樣的事件一般在函數內去觸發
        // 事件5 mousemove  鼠標在移動時觸發,但是會持續觸發。(test 時,也使用去全局觸發)
        document.addEventListener('mousemove', function () {
            // console.log('moving……')
        })
        // 事件6 鼠標進進入節點的一瞬間會立刻觸發,當進入子節點,或者離開時不會觸發
        btn6.addEventListener('mouseenter', function () {
            // console.log('i am comming ^_^')
        })
        // 事件7 鼠標進入節點會觸發這個事件。進入子節點還會觸發這個事件 
        btn6.addEventListener('mouseover', function () {
            console.log('i am mouseover')
        })  // 註意 這個與mouseenter 相比。會多觸發兩次 。離開節點進入自節點會觸發,離開子節點,進入父級節點還會觸發一次
        // 事件8 mouseout 鼠標離開節點時觸發。當鼠標進入子接點,相當離開父節點,一樣會觸發該事件。從子節點離開,進入父級節點一樣會觸發該事件!
        btn7.addEventListener('mouseout', function () {
            console.log('i am mouseout')
        })
        // 事件9 mouseleave   // 只有在父級節點出去的時候才會觸發。不會在子節點中觸發
        btn8.addEventListener('mouseleave', function () {
            console.log('i am mouseleva')
        })
        // 事件10 contextmenu  // 點擊右鍵觸發
        btn9.addEventListener('contextmenu',function(){
            console.log('i am contextmenu')
        })
        // 事件11 wheel  
        document.addEventListener('wheel',function(){
            console.log('i am mousewheel')
        })

    </script>
</body>

</html>

總結

  • click 事件是指的是,用戶在同一個位置完成mousedown動作,在完成mouseup動作。因此呢,執行的順序分別為,mousedown 首先觸發 -後續執行mouseup,然後執行click
  • dbclick 事件會在mousedown - mouseup click - 後執行!
  • mouseenter 和 mouseover 都是鼠標進入事件觸發,但是兩者的區別是。前者只觸發一次,後者會在子節點上多次觸發。
  • mouseout mouseleave 都是鼠標離開時候觸發。但兩者的區別是,前者會在子節點內多次觸發。後者只會離開節點時觸發。

每日分享!JavaScript的鼠標事件(11個事件)