是否可以使用javascript中的自定义事件重新创建“onClick事件”?

时间:2015-11-29 22:43:00

标签: javascript events onclick custom-events

我正在尝试了解custom events,我很好奇。你可以逐字创建onClick事件但是写在自定义事件中吗?

ex。创建一个元素:

<h1 id="clicky">click here</h1>

创建与click事件相同的自定义事件?

obj = document.getElementById('clicky');

obj.addEventListener("fakeClick", function(e) { console.log(e.detail) });


var event = new CustomEvent("fakeClick", {
  detail: {
    hazcheeseburger: true
  }
});

obj.dispatchEvent(event);

继承人JSFiddle

1 个答案:

答案 0 :(得分:1)

这取决于你的意思,使它'与点击事件相同'。 调用dispatchEvent时自定义事件触发相应的Dom元素(就像你上面所做的那样)。所以基本上如果你发送自定义事件在点击事件处理程序中,那么它基本上模拟了一个点击事件,但似乎没有太多理由这样做。

P.S。你从小提琴那里得到的错误是因为你还没有定义你在process事件处理程序中调用的函数fakeClick

==========更多详情=========

我的意思是您可以通过以下方式使用自定义事件来“模拟”点击事件,但这实际上无法达到目的,因为您可以直接使用浏览器点击事件。

var event = new CustomEvent("fakeClick", {
  detail: {
    hazcheeseburger: true
  }
});

obj = document.getElementById('clicky');

obj.addEventListener("click", function () {
    this.dispatchEvent(event);
});

obj.addEventListener("fakeClick", function(e) { console.log(e.detail) });