プロジェクト中、ユーザーが別の要素で対応するイベントをトリガーしてから、対応するコードを実行する必要があります。これは、jquery
trigger APIのトリガーを通じて実現できます。
今日 よく考えたら、jqがない場合、jsを使ってどうやって実装すればいいのでしょうか?最近、「JavaScript による高度なプログラミング」という本を 2 回目に読み、いくつかの新しい洞察を得ました。クリックイベントがトリガーされる場合、第一印象は間違いなく直接 element.click(); ですが、dbclick、mouseleave、focus、mouseenter などのイベントも直接 element.mouseleave() でトリガーできますか?
そこで、当然のことながら、createEvent initEventdispatchEvent メソッドを思いつきました。
// 创建一个事件对象,就好像你绑定事件回调函数里获得的那个事件对象一样var myEvent = document.createEvent('Event') // 初始化这个事件对象,为它提高需要的“特性”myEvent.initEvent('myEventName', true, true) // 按照常见的方式绑定对该事件的监听,这里的 element 可以是任何一个元素,你懂的element.addEventListener('myEventName', function(evt) { // 这里,evt 就是你创建的事件对象了,不过它会更丰富一些——这些是浏览器为你做的})// 然后这样触发它element.dispatchEvent(myEvent)
コードを直接アップロードします: (試してみましたが、互換性がありません <= IE8)
<!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('Event') // 初始化这个事件对象,为它提高需要的“特性” 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の例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。