ホームページ  >  記事  >  ウェブフロントエンド  >  jqueryのトリガーを模倣してマウスイベントをトリガーするJavaScriptの例を共有する

jqueryのトリガーを模倣してマウスイベントをトリガーするJavaScriptの例を共有する

小云云
小云云オリジナル
2018-03-15 16:26:253448ブラウズ

プロジェクト中、ユーザーが別の要素で対応するイベントをトリガーしてから、対応するコードを実行する必要があります。これは、jquery

trigger APIのトリガーを通じて実現できます。

jqueryのトリガーを模倣してマウスイベントをトリガーするJavaScriptの例を共有する

今日 よく考えたら、jqがない場合、jsを使ってどうやって実装すればいいのでしょうか?最近、「JavaScript による高度なプログラミング」という本を 2 回目に読み、いくつかの新しい洞察を得ました。

クリックイベントがトリガーされる場合、第一印象は間違いなく直接 element.click(); ですが、dbclick、mouseleave、focus、mouseenter などのイベントも直接 element.mouseleave() でトリガーできますか?

それで実行してみたところ、エラーが報告されていることが分かりました。そうです、対応するイベントを直接トリガーできるように element.eventType() を追加するだけでは問題ありません。

jqueryのトリガーを模倣してマウスイベントをトリガーするJavaScriptの例を共有する

そこで、当然のことながら、createEvent initEventdispatchEvent メソッドを思いつきました。

// 创建一个事件对象,就好像你绑定事件回调函数里获得的那个事件对象一样var myEvent = document.createEvent('Event')
// 初始化这个事件对象,为它提高需要的“特性”myEvent.initEvent('myEventName', true, true)
// 按照常见的方式绑定对该事件的监听,这里的 element 可以是任何一个元素,你懂的element.addEventListener('myEventName', function(evt) {
  // 这里,evt 就是你创建的事件对象了,不过它会更丰富一些——这些是浏览器为你做的})// 然后这样触发它element.dispatchEvent(myEvent)

コードを直接アップロードします: (試してみましたが、互換性がありません

<!DOCTYPE html><html lang="zh-cmn-Hans"><head>
    <meta charset="utf-8" />
    <title>原生javascript防jquery的trigger触发鼠标事件</title>
    <meta name="author" content="" />
    <style>
        .p{height:40px;width:100px;background:#ccc;}
    </style></head><body>
    <h2>我是H2</h2>
    <p class="p">点击p</p></body></html><script>

    var h2 = document.querySelector("h2");    var p = document.querySelector(".p");

    h2.onclick = function(event){
        var ev = event || window.event;
        console.log(ev.type);
    }

    h2.ondbclick = function(event){
        var ev = event || window.event;
        console.log(ev.type);
    }

    h2.onmouseenter = function(event){
        var ev = event || window.event;
        console.log(ev.type);
    }

    h2.onmouseleave = function(event){
        var ev = event || window.event;
        console.log(ev.type);
    }

    h2.onfocus = function(event){
        var ev = event || window.event;
        console.log(ev.type);
    }

    h2.onblur = function(event){
        var ev = event || window.event;
        console.log(ev.type);
    }    //触发事件方法
    function trigger(elem, event){

        var myEvent = document.createEvent(&#39;Event&#39;)        // 初始化这个事件对象,为它提高需要的“特性”
        myEvent.initEvent(event, true, true);        //执行事件
        elem.dispatchEvent(myEvent);
    }

    p.onclick = function(){

        trigger(h2, "click");   //触发click事件

        trigger(h2, "dbclick"); //触发dbclick事件

        trigger(h2, "mouseenter");  //触发mouseenter事件

        trigger(h2, "mouseleave");  //触发mouseleave事件

        trigger(h2, "blur");    //触发blur事件

        trigger(h2, "focus");   //触发focus事件

    }</script>

結果は次のようになります:

jqueryのトリガーを模倣してマウスイベントをトリガーするJavaScriptの例を共有する

(試してみましたが、互換性はありません

以上がjqueryのトリガーを模倣してマウスイベントをトリガーするJavaScriptの例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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