【问题标题】:How Event Bubbling works and what is it? [duplicate]事件冒泡是如何工作的,它是什么? [复制]
【发布时间】:2017-08-10 08:12:50
【问题描述】:

注意:这个问题用Difference between Event Bubbling and Event Capture 标记为 dup,但事实并非如此。我想问一下 Event、Target 和 TagName 是什么的基本问题。我想了解,什么是偶数,什么是target和tagName,就像函数中传递的参数一样。

我试图理解 eventstarget,换句话说,事件冒泡,我完全不知道它是什么以及如何理解它,我知道一切都是事件,但有人能解释打个比方,哪里用一个例子就很容易理解了

document.addEventListener = ("click", (event) => {
   event.target.tagName
});

tagName 是我想知道的。

【问题讨论】:

  • @caisah 不,我读到了,但它不能满足我的问题
  • 冒泡是事件的一小部分。事件对象与冒泡没有太大关系。目标应该是easy enough to learn about,而不使用stackoverflow。 tagName与事件无关,是also easy to research

标签: javascript events


【解决方案1】:

您的问题似乎命名错误。从您的编辑看来,您确实想了解更多关于 event 对象的信息,尤其是 targettarget.tagName 属性。

下面是一个事件冒泡的例子,展示了有问题的属性:

  • event 保存有关已发生事件的元数据;
  • event.target 持有对原始事件源的引用,例如单击的按钮;
  • event.target.tagName 只是 target 的标签的大写名称,例如'DIV''P';
  • event.currentTarget 持有对附加事件侦听器的节​​点的引用。

let handler = event => {
  console.log('Handler fired!')
  console.log('Event listener attached to:', event.currentTarget)
  console.log('Event originally occurred on:', event.target)
}

document.getElementById('outer').addEventListener('click', handler)
document.getElementById('inner').addEventListener('click', handler)
document.body.addEventListener('click', handler)
<div id="outer">
  <button id="inner">Click Me!</button>
</div>

【讨论】:

  • 谢谢!这就是我想要的,您可能想要编辑问题,因为我不是以英语为母语的人。但是我对eventtarget 有点困惑。我可以说target 就像clickkeydownkeypress,但又不是event,就像事件所说的那样。你所做的一切,例如滚动、点击、keydownkeypresszoompan 都是 event,或者我错过了什么>
  • event.target 是页面上的一个 DOM 节点,例如 &lt;div&gt;&lt;a&gt;。持有的属性,例如keydownclick 将是 event.type
  • 我在掌握它的同时做了这样的事情document.addEventListener("click" , function(event){ console.log("The" + event + "is clicked and" + event.target + "is targeted using tagname of " + event.target.tagName); }),我不明白的是当上面的输出时,它被分解为应该[HTMLLIElement]但是当我做event.target.tagName 它给了我完整的元素和它的内容,为什么不同
  • target 本身是一个具有textContenttagName 等属性的对象(它们都是字符串)。当您将对象打印到控制台时,它要么将其转换为'[HTMLLIElement]' 之类的字符串,要么将其所有属性显示为树。另一方面,字符串将始终打印为字符串。
  • 太好了,我会试试你的最后一条评论,我会试着消化它,但感谢你提供的很好的例子和解释!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 2011-05-19
  • 2011-03-18
  • 2011-08-25
  • 2019-01-16
相关资源
最近更新 更多