【问题标题】:How can I execute EventListener 'click' from JavaScript如何从 JavaScript 执行 EventListener 'click'
【发布时间】:2026-02-23 04:30:01
【问题描述】:

我在元素上有事件监听器myObject.addEventListener('click',this.doSomething,false)。 当我点击鼠标时它工作正常,但我不知道如何从 JavaScript 触发点击。 element.click() 似乎不适用于 div?

我正在使用 jQuery,我也尝试过 trigger('click'),但没有任何反应。

如何在 JavaScript 中执行 EventListener?

更新:

这里是示例代码http://jsbin.com/iniwi5/2

【问题讨论】:

标签: javascript jquery events webkit addeventlistener


【解决方案1】:

你能用 jQuery 来绑定事件吗?

$(myobject).click(function() {

});

然后

myobject.trigger('click');

将以编程方式触发点击。

【讨论】:

  • '点击'一个 div 基本上是一个自定义事件,你不能在本地进行。所以我同意 - 这是最简单的方法。
  • 我同意这是一种解决方法,我想不出用事件监听器来做这个,所以我重构了我的代码以使用 .click()
【解决方案2】:

要触发通过addEventListener 添加的点击事件侦听器,您需要使用dispatchEvent(对于符合标准的浏览器)或fireEvent(对于 IE

【讨论】:

    【解决方案3】:

    试试这个:

    myObject.click; // no `()`
    

    或者:

    (myObject.click)();
    

    【讨论】:

    • myObject.click 是错误的——如果点击存在,它就是一个函数。第二个示例与myObject.click() 相同,仅为INPUT elements of certain types 标准化。您不能依赖任意元素来支持它。
    【解决方案4】:

    根据您提供的代码,应该是这样的:

    var obj = document.getElementById('hello');
    
    if (obj.addEventListener) {
        obj.addEventListener('click', function () {foo()},false);
    } else {
        obj.attachEvent ('onclick', function () {foo()});
    }
    

    富是:

    function foo(){
        alert("foo");
    }
    

    参考: http://help.dottoro.com/ljeuqqoq.php

    编辑:修复了 Chrome 和非 IE 浏览器的错误... Shuold 现在可以在两者中使用。

    【讨论】:

    • 发帖者没有询问如何注册事件监听器。问题是,既然已经绑定了一个事件监听器,我该如何手动触发呢?