ホームページ  >  記事  >  ウェブフロントエンド  >  js マウスクリックでムーブインイベントをトリガーするソリューションを学びます

js マウスクリックでムーブインイベントをトリガーするソリューションを学びます

php是最好的语言
php是最好的语言オリジナル
2018-07-24 15:33:443197ブラウズ

マウスボタン(左または右ボタン)が押されると、マウスイベントがトリガーされます。キーボードからはトリガーできません。マウスイベントがトリガーされる順序は何ですか?詳細な例を以下に示します。

マウス イベント

9 個のマウス イベントが DOM レベル 3 イベントで定義されています。

  • mousedown: マウスボタン ​​(左または右ボタン) が押されたときにトリガーされます。キーボードからはトリガーできません。

  • mouseup: マウスボタンが放されてポップアップするとトリガーされます。キーボードからはトリガーできません。

  • click: マウスの左ボタンがクリックされるか、Enterキーが押されるとトリガーされます。これはアクセシビリティを確保するために重要です。つまり、onclick イベント ハンドラーはマウスだけでなくキーボードからも実行できることになります。

  • dblclick: マウスの左ボタンがダブルクリックされるとトリガーされます。

  • mouseover: ターゲット要素の上にマウスを移動します。マウスがその子孫要素の上に移動すると発生します。

  • mouseout: マウスがターゲット要素の外に移動します。

  • mouseenter: マウスが要素の範囲内に移動するとトリガーされます。このイベントはバブルアップしません。つまり、マウスがその子孫要素の上を移動してもトリガーされません。

  • mouseleave: マウスが要素範囲外に移動するとトリガーされます。このイベントはバブルしません。つまり、マウスがその子孫要素に移動してもトリガーされません。

  • mousemove: マウスが要素内で移動すると継続的にトリガーされます。キーボードからはトリガーできません。

note:

クリック イベントは、要素上でマウスダウン イベントとマウスアップ イベントが連続してトリガーされた場合にのみトリガーされます。 dblclick イベントは、2 つのクリック イベントが続けてトリガーされた場合にのみトリガーされます。

マウスダウンまたはマウスアップのいずれかがキャンセルされた場合、クリックイベントはトリガーされません。クリック イベントが直接的または間接的にキャンセルされた場合、dblclick イベントはトリガーされません。

1. イベントトリガーの順序

例: ボタンをダブルクリックして上記でトリガーされたイベントを見てください。

<input id="btn" type="button" value="click"/><script>
    var btn = document.getElementById("btn");
    btn.addEventListener("mousedown",function(event){
        console.log("mousedown");
    },false);
    btn.addEventListener("mouseup",function(){
        console.log("mouseup");
    },false);
    btn.addEventListener("click", function () {
        console.log("click");
    },false);
    btn.addEventListener("dblclick", function () {
        console.log("dblclick");
    },false);</script>

コードを見る

2. Mouseenter と Mouseover の違い

違い:

Mouseover イベントはバブルします。これは、マウスがその子孫要素の上を移動するとトリガーされることを意味します。

mouseenter イベントはバブルしません。つまり、マウスがその子孫要素の上を移動してもイベントは発生しません。

例:

<!DOCTYPE html><html><head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        #outer{            position: absolute;            width: 200px;            height: 200px;            top:0;            left: 0;            bottom:0;            right: 0;            margin: auto;            background-color: pink;        }
        #inner{            position: absolute;            width: 100px;            height:100px;            top:50%;            left:50%;            margin-left: -50px;            margin-top: -50px;;
            background-color: orange;            text-align: center;            line-height: 100px;        }
        #outer,#inner{            border-radius:50%;        }
    </style>
    <script src="jquery-2.1.1.min.js"></script></head><body><body>
    <p id="outer">
            <p id="inner">
            </p>
    </p></body><script>
    var parentp = document.getElementById("outer");
    parentp.addEventListener("mouseover", function () {
         console.log("父p的mouseover事件被触发");
    },false);    //parentp.addEventListener("mouseenter", function () {
    //    console.log("父p的mouseenter事件被触发");
    //},false);
    //parentp.addEventListener("mouseout", function () {
    //    console.log("父p的mouseout事件被触发");
    //},false);
    //parentp.addEventListener("mouseleave", function () {
    //    console.log("父p的mouseleave事件被触发");
    //},false);</script></body></html>

コードを見る

note:

mouseoverはmouseoutに対応し、mouseenterはmouseleaveに対応します。上記のコードのコメントを解除すると、その効果が確認できます。

jqueryのhover APIは、mouseenterとmouseleaveを組み合わせたものです。

3. マウスの左右のボタン

<script type="text/javascript">document.onmousedown=function (ev){
    var oEvent = ev||event; //IE浏览器直接使用event或者window.event得到事件本身。
    alert(oEvent.button);// IE下鼠标的 左键是1 ,  右键是2   ff和chrome下 鼠标左键是0  右键是2};</script>

関連する推奨事項:

JavaScript イベントの学習の概要 (2) js イベント ハンドラー

JavaScript イベントの学習の概要 (4) イベントのパブリック メンバー ( プロパティ

JavaScriptイベント学習のまとめ(3) jsイベントオブジェクト

JavaScriptイベント学習のまとめ(1) イベントフロー

ビデオ: JavaScriptのマウスオーバーイベント(onmouseover) - JavaScript初心者チュートリアル

以上がjs マウスクリックでムーブインイベントをトリガーするソリューションを学びますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。