Javascript停止传播

Javascript停止传播,javascript,Javascript,我只是在学习,所以代码可能不是最好的。我在其他答案中尝试了几个例子,但我被困在这里了 Function invisibleDiv(){ var invDiv = document.createElement('div'); var secondDiv = document.createElement('div'); secondDiv.setAttribute('class', 'secondDiv'); document.body.appendChild(invDi

我只是在学习,所以代码可能不是最好的。我在其他答案中尝试了几个例子,但我被困在这里了

Function invisibleDiv(){  
  var invDiv = document.createElement('div');  
  var secondDiv = document.createElement('div');  
  secondDiv.setAttribute('class', 'secondDiv');
  document.body.appendChild(invDiv);
  invDiv.appendChild(secondDiv);
};
我有这个jQuery代码:

$(document).on("click", ".secondDiv", function (e){
    e.stopPropagation();
});
所有这些都在工作,但我正在尝试用纯Javascript替换所有jQuery函数,因此我尝试了以下方法:

document.addEventListener("DOMContentLoaded", function(event) {
  var secondDiv = document.querySelector('.secondDiv').
  div.addEventListener('click', function(e) {
    e.stopPropagation; // Not working
    secondDiv.stopPropagation; // Not working
  }
});
我尝试将事件侦听器添加到函数invisibleDiv中,我可以在DevTools中看到事件已附加,但单击secondDiv时仍会在invisibleDiv中触发事件


我可以通过Display:none/block将这两个div添加到html代码中,但由于它在动态添加时与jQuery一起工作,我想知道我做错了什么。

更新:

根据你以上的评论,我觉得你在寻找这样的东西:

  var outer = document.querySelector('.outer');
  var inner = document.querySelector('.inner');

  outer.addEventListener('click', function(e) {
      console.log("Outer clicked");
  });

 inner.addEventListener('click', function(e) {
     e.stopPropagation();
 });

看起来您没有调用该函数

JavaScript中的函数是通过使用
()
括号执行的,因此您的代码变成:

e.stopPropagation()
secondDiv.stopPropagation()


调用
secondDiv.stopPropagation()
是多余的,因为对象没有该函数,需要删除。

更新:

根据你以上的评论,我觉得你在寻找这样的东西:

  var outer = document.querySelector('.outer');
  var inner = document.querySelector('.inner');

  outer.addEventListener('click', function(e) {
      console.log("Outer clicked");
  });

 inner.addEventListener('click', function(e) {
     e.stopPropagation();
 });

看起来您没有调用该函数

JavaScript中的函数是通过使用
()
括号执行的,因此您的代码变成:

e.stopPropagation()
secondDiv.stopPropagation()


调用
secondDiv.stopPropagation()
是多余的,因为该对象没有该函数,需要删除该函数。

要想知道你做错了什么,需要先解释一下你需要做什么。你想用
secondDiv.stopPropagation
表达什么?我在身体上附加了一个高度和大小为100%的透明div,另一个div指向透明div。因此,您可以在第二个div中选择选项,当在第二个div外单击时,它将触发透明div中的事件,该事件将删除两个div。但是当单击第二个div中的选项时,它会传播到透明div并删除两个div。它与Jquery一起工作。要知道你做错了什么,你需要先解释一下你需要做什么。你想用
secondDiv.stopPropagation
表达什么?我在身体上附加了一个高度和大小为100%的透明div,另一个div指向透明div。因此,您可以在第二个div中选择选项,当在第二个div外单击时,它将触发透明div中的事件,该事件将删除两个div。但是当单击第二个div中的选项时,它会传播到透明div并删除两个div。它和Jquery一起工作。据我所知,什么都没有。节点集合上没有stopPropagation方法。这个可以删除。是的。我第一次匆忙回答时就错过了。谢谢你提醒我。我试过停止播放();有括号和没有括号,但点击仍然传播,我添加了这两个例子,因为我尝试了e.stopPropagation;e、 停止传播();第二,停止传播;第二个div.stopPropagation();我们不知道您的代码示例中的
div
是什么,但我猜您确实想将单击处理程序附加到
secondDiv
而不是
div
。请查看我的更新。我想这就是你要问的。据我所知什么都没有。节点集合上没有stopPropagation方法。这个可以删除。是的。我第一次匆忙回答时就错过了。谢谢你提醒我。我试过停止播放();有括号和没有括号,但点击仍然传播,我添加了这两个例子,因为我尝试了e.stopPropagation;e、 停止传播();第二,停止传播;第二个div.stopPropagation();我们不知道您的代码示例中的
div
是什么,但我猜您确实想将单击处理程序附加到
secondDiv
而不是
div
。请查看我的更新。我想这就是你要问的。