Dog*_*ert 2 javascript dom dom-events
如果我递归通过.parentNodeof event.target,我能保证到达吗this?规范中是否提到了这一点?
下面是一些代码来演示这一点,它将记录 ifevent.target是 的后代this:
http://jsfiddle.net/Dogbert/aRLrG/
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));
});
}
Run Code Online (Sandbox Code Playgroud)
超文本标记语言
<div id="a">A
<div id="b">B
<div id="c">C
<div id="d">D
<div id="e">E</div> <span id="f">F</span>
<button>B</button> <span>1<span>2<span>3
</span></span>
</span>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
是的。
该事件被分派到其目标
EventTarget,并触发在那里找到的任何事件侦听器。然后,冒泡事件将触发通过沿着父链向上找到的任何其他事件侦听器,EventTarget检查在每个后续事件上注册的任何事件侦听器EventTarget。这种向上传播将持续到并包括Document。http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-bubbling
请注意,还有非冒泡事件,例如focus,因此event.target == this.