【发布时间】:2016-03-28 04:46:28
【问题描述】:
我想我理解事件气泡,但是当我将下面的代码付诸实践时,它似乎不起作用。 当我期望它们继续超出该范围时,警报会在跨度级别停止。 如果有人能指出我所缺少的,我将不胜感激。但我有更大的谜题(至少对我来说)。事件泡沫的意义何在?在我看来,事件气泡不应该是默认设置,而应该是打开它的一个选项。有人可以给我一个 WHEN 自动事件气泡有用的例子吗?(请指出事件气泡是否默认打开,因此解释了为什么我的代码没有得到我的结果期待)。
非常感谢大家一如既往地提前!!
<body>
<div>
<h1>
<a href="#">
<span>Hello</span>
</a>
</h1>
</div>
<script>
//window.addEventListener("load",function(){
// var els = document.querySelectorAll("*");
// for ( var i=0; i< els.length; i++){
// els[i].addEventListener("click", function(){
// alert('click even fired on the ' + this.nodeName + ' element');
// });
// }
//});
$("span").click(function(){
alert('click even fired on the ' + this.nodeName + ' element');
});
</script>
进一步传播,给出下面的代码,如果我只想匹配 spanOut,我不想使用气泡方法。(可能必须在上面挤入 span id?)。在这种情况下冒泡方法有什么帮助?
<span> spanOut
<div>
divOut
</div>
<span>spanIn</span>
<div>divIn</div>
<span>spanIn2</span>
<div>
divOut2
</div>
</span>
【问题讨论】:
-
冒泡实际上并不是让一个处理程序来处理许多元素。更多的是让其他处理程序做他们的事情的处理程序。例如,您可以通过 ID 将事件处理程序绑定到 spanOut。即使在这种情况下,事件冒泡仍然会发生,因为事件将首先在 divIn 上触发,然后是 spanIn,最后是 spanOut。
标签: jquery propagation