【问题标题】:Checking Clicked Element in Bubbling检查冒泡中单击的元素
【发布时间】:2016-08-05 23:43:06
【问题描述】:

我正在修补事件冒泡,我为自己创建了典型的 3 个 div 彼此练习,我能够让代码正常工作,事件在我想要的地方停止“冒泡”。

我的代码很笨重,所以我试着让它更简单一点。通过让我所有的<divs> 指向一个函数,该函数有一个声明说如果 this <div> 被点击,运行该函数然后停止传播,但我相信我的方式“检查”点击错误。

链接:https://jsfiddle.net/theodore_steiner/t5r5kov0/3/

var d1 = document.getElementById("d1");
var d2 = document.getElementById("d2");
var d3 = document.getElementById("d3");

function showme(event) {
  if (d3.onclick == true) {
    alert("hello")
    event.stopPropagation();
  } else {
    alert("hello");
  }
};

d1.addEventListener("click", showme);
d2.addEventListener("click", showme);
d3.addEventListener("click", showme);
 #d1 {
   height: 300px;
   width: 300px;
   border: 1px solid black;
 }
 #d2 {
   height: 200px;
   width: 200px;
   border: 1px solid black;
 }
 #d3 {
   height: 100px;
   width: 100px;
   border: 1px solid black;
 }
<div id="d1">
  <div id="d2">
    <div id="d3">
    </div>
  </div>
</div>

【问题讨论】:

  • e.target 怎么样?

标签: javascript event-bubbling propagation


【解决方案1】:

event.target.id 用作event.target 将返回element,其中eventinvokedidDOMElement 的属性

Event.target,对调度事件的对象的引用。

var d1 = document.getElementById("d1");
var d2 = document.getElementById("d2");
var d3 = document.getElementById("d3");

function showme(event) {
  if (event.target.id == 'd3') {
    alert("hello")
    event.stopPropagation();
  } else {
    alert("hello");
  }
};

d1.addEventListener("click", showme);
d2.addEventListener("click", showme);
d3.addEventListener("click", showme);
#d1 {
  height: 300px;
  width: 300px;
  border: 1px solid black;
}
#d2 {
  height: 200px;
  width: 200px;
  border: 1px solid black;
}
#d3 {
  height: 100px;
  width: 100px;
  border: 1px solid black;
}
<div id="d1">
  <div id="d2">
    <div id="d3">
    </div>
  </div>
</div>

【讨论】:

  • 非常感谢...只是出于好奇,我最初编写 if 语句 ((d3.onclick == true)) 的方式是检查任何内容吗?
  • 首先,使用console.log(expression)进行调试..检查console.log(d3.onclick)并查看Developers tools中的值
猜你喜欢
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 2016-04-13
  • 2013-09-29
相关资源
最近更新 更多