为什么自定义事件的数据无法传递?

时间:2019-09-23 23:15:54

标签: javascript

我正在尝试将其他数据传递到我的CustomEvent,以便其他项目可以加入其中并根据其中的内容创建逻辑。这是我所拥有的:

$(window).on('contentRemoved', (event) => {
  console.log(event.some_data);
});


$('#trigger').on('click', () => {
  const contentRemovedEvent = new CustomEvent('contentRemoved', {
    'some_data': 1
  });
  window.dispatchEvent(contentRemovedEvent);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button id="trigger">Click me</button>

...但是它返回为未定义。我在做什么错了?

1 个答案:

答案 0 :(得分:5)

您必须使用detail键传递一个对象:https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events#Event_bubbling

  

要向事件对象添加更多数据,必须存在CustomEvent接口   并且detail属性可用于传递自定义数据。

您传递给CustomEvent的第二个参数就像一个options对象,您可以在其中指定databubbles ..,check the list of possible properties {{ 1}}进入data

detail
$(window).on('contentRemoved', (event) => {
  console.log(event.detail);
});


$('#trigger').on('click', () => {
  const contentRemovedEvent = new CustomEvent('contentRemoved', {
    detail : { 'some_data': 1 }
  });
  window.dispatchEvent(contentRemovedEvent);
});