首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery dispatchEvent包装方法

Jquery dispatchEvent包装方法
EN

Stack Overflow用户
提问于 2013-09-16 08:49:14
回答 1查看 6.1K关注 0票数 8

jquery中是否有用于dispatchEvent的包装器方法或库?我一直在堆栈溢出中寻找这种情况,但我找到的最接近的方法是jquery的触发器(),它似乎只触发jquery事件侦听器。当然,我自己也可以使用dispatchEvent,但我想使用jquery来使代码更容易阅读。

我正在编写一个greasemonkey脚本,其中我想向某个匿名事件侦听器发送一个事件。页面本身不是用jquery编写的。

这里有一个jsfiddle链接来解释我想要完成的任务:https://jsfiddle.net/Zx3CA/

联署材料:

代码语言:javascript
复制
function log(s){
    document.getElementById('log').innerHTML+=s+'<br/>';
}

$(function(){
    //code on the page, which shouldn't be changed
    //start
    document.getElementById('link').addEventListener('click',function(){
        log('click detected');
    },false);
    //end
    
    $('#triggerClickJQuery').on('click',function(){
        $('#link').trigger('click');
    });
    
    $('#triggerClickJS').on('click',function(){
        var event=document.createEvent('MouseEvents');
        event.initMouseEvent('click',true,true,null,-1,-1,-1,-1,0,true,false,false,true,0,null);
        $('#link').get(0).dispatchEvent(event);
    });
});

html:

代码语言:javascript
复制
<body>

<a id="link" href="javascript:void(0);">Link</a><br/>
<a id="triggerClickJQuery" href="javascript:void(0);">Trigger Click JQuery</a><br/>
<a id="triggerClickJS" href="javascript:void(0);">Trigger Click JavaScript</a><br/>

<div id="log"></div>

</body>

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-19 18:05:17

trigger在jQuery中的实现(最多1.10.1)不会触发本机事件,因此您将无法通过加载在同一页面上的addEventListener或不同版本的jQuery侦听该事件。

这个bug及其所有用例在这里都有很好的文档:http://bugs.jquery.com/ticket/11047

作为解决方案,您可以使用此plugin,它检查浏览器是否支持触发自定义本机事件,并在可用时使用它。

https://github.com/sandeep45/betterTrigger

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18823872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档