>웹 프론트엔드 >JS 튜토리얼 >마우스 이벤트를 트리거하기 위해 jquery의 트리거를 모방하는 자바스크립트의 예 공유

마우스 이벤트를 트리거하기 위해 jquery의 트리거를 모방하는 자바스크립트의 예 공유

小云云
小云云원래의
2018-03-15 16:26:253466검색

프로젝트 중에는 사용자가 다른 요소에서 해당 이벤트를 트리거한 다음 해당 코드를 실행하는 데 사용됩니다. 이는 jquery

trigger API

를 통해 달성할 수 있습니다.

마우스 이벤트를 트리거하기 위해 jquery의 트리거를 모방하는 자바스크립트의 예 공유

오늘 생각해보니 jq가 없다면 js를 이용해서 어떻게 구현할 수 있을까요? 저는 최근에 "JavaScript를 사용한 고급 프로그래밍"이라는 책을 두 번째로 읽고 새로운 통찰력을 얻었습니다.
click 이벤트가 발생하면 첫인상은 확실히 element.click();입니다. 그러면 dbclick, mouseleave, focus, mouseenter 및 기타 이벤트도 직접 element.mouseleave()로 트리거할 수 있나요?

그래서 실행해 보니 오류가 보고된 것을 발견했습니다! 맞습니다. 해당 이벤트가 직접 트리거될 수 있도록 element.eventType()을 추가하는 것만으로는 문제가 되지 않습니다.

마우스 이벤트를 트리거하기 위해 jquery의 트리거를 모방하는 자바스크립트의 예 공유

그래서 자연스럽게 createEvent initEvent dispatchEvent 메소드가 생각났습니다.

// 创建一个事件对象,就好像你绑定事件回调函数里获得的那个事件对象一样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의 트리거를 모방하는 자바스크립트의 예 공유

(시도했지만 호환되지 않습니다

위 내용은 마우스 이벤트를 트리거하기 위해 jquery의 트리거를 모방하는 자바스크립트의 예 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.