如果我通过.parentNode
的{{1}}递送,我保证会event.target
吗?这是在规范中的任何地方提到的吗?
这里有一些代码可以证明这一点,如果this
是event.target
的后代
http://jsfiddle.net/Dogbert/aRLrG/
this
HTML
var isADescendentOf = function (child, parent) {
if (child === parent) {
return true;
}
if (child === null) {
return false;
}
return isADescendentOf(child.parentNode, parent);
};
var nodes = document.querySelectorAll("*");
for (var i = 0; i < nodes.length; i++) {
nodes[i].addEventListener("click", function (event) {
console.log(isADescendentOf(event.target, this));
});
}
答案 0 :(得分:4)
是
将事件调度到其目标
EventTarget
,并且发现触发的任何事件侦听器。然后,冒泡事件将触发通过跟随EventTarget
的父链向上找到的任何其他事件侦听器,检查在每个连续EventTarget
上注册的任何事件侦听器。这种向上传播将继续包括Document
。http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-bubbling
请注意,还有非focus
等非冒泡事件,因此event.target == this
。