javascript - 观察具有单独点击观察功能的元素内的元素点击

标签 javascript prototypejs

我在另一个元素中有一个元素,并且两者都有单独的点击功能。如果子元素具有点击功能,我想做的是忽略或停止父元素。例如:

<div class="parent">
   <div class="child1">Child Click Function</div>
   Parent Click Function
</div>
<script type="text/javascript">
document.observe('dom:loaded',function(){
   if ($$('.parent') != undefined) {
      $$('.parent').invoke('observe','click', function(e) {    
         alert('parent');         
      });
   }
   if ($$('.child1') != undefined) {
      $$('.child1').invoke('observe','click', function(e) {    
         alert('child');         
      });
   }        
});
</script>

发生的事情是,当点击 child1 时,由于 child1 在父级中,因此它和父级都被触发。我想在选择子项时禁用/停止观察,但是当您单击父项中的任何其他内容时,它会正常工作。

谢谢。

最佳答案

您遇到了所谓的“事件冒泡”。除非您明确停止冒泡,否则给定元素上的事件会在 DOM 中冒泡,直到到达根节点。由于看起来您正在使用 Prototype,因此将您 child 的事件处理程序更新为以下内容应该可以解决问题:

$$('.child1').invoke('observe','click', function(e) {    
    Event.stop(e);    
    alert('child');         
});

http://api.prototypejs.org/dom/Event/prototype/stop/

关于javascript - 观察具有单独点击观察功能的元素内的元素点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9025595/

相关文章:

javascript - 在 AngularJS 中通过状态链路由的正确方法是什么?

javascript - jQuery:忽略选择器的元素索引

javascript - render不能在react函数中使用

php - 在 Ajax 响应回调中获取 json

javascript - 获取已被观察的事件名称

javascript - 没有每个和回调函数的 jQuery 循环

javascript - 嵌套元素中的多个事件

javascript - Prototype 奇怪的支持环境检查

jQuery 和原型(prototype)选择器的疯狂

javascript - 将绑定(bind)应用于整个 dom 或每个需要它的单独元素?