Javascript Vanilla-如何在ajax内容内的元素上附加事件侦听器?

时间:2018-06-22 04:00:28

标签: javascript ajax selector

如果在Jquery中,我们可以像这样简单地在<body>中委派事件:

$('body').on('click', 'a[data-method]', function () {
  // event action here
});

但是我们如何在Vanilla Javascript中做到这一点?

注意:<a data-method="">是在ajax内容内创建的

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以将事件监听器添加到body,然后检查event.target.matches是否是所需的选择器:

document.body.addEventListener('click', (event) => {
  if (!event.target.matches('a[data-method]')) return;
  console.log('click');
});

setTimeout(() => {
  const a = document.body.appendChild(document.createElement('a'));
  a.setAttribute('data-method', 'foo');
  a.textContent = 'aaa';
}, 100);