Javascript 如何使用click方法在元素内部添加click方法?

Javascript 如何使用click方法在元素内部添加click方法?,javascript,jquery,html,Javascript,Jquery,Html,假设我有: <div id="outer" onclick="thingsHappen()"> <div id="inner"></div> </div> 当我单击“内部”时,shappen()和doThings()都会执行。 当我单击内部div而不执行thingsHappen()时,如何执行doThings() 我试图从#内部解除click方法的绑定,但没有成功。 另外,我无法更改HTML的结构。事件: $("#inne

假设我有:

   <div id="outer" onclick="thingsHappen()">
      <div id="inner"></div>
   </div>
当我单击“内部”时,shappen()和doThings()都会执行。 当我单击内部div而不执行thingsHappen()时,如何执行doThings()

我试图从#内部解除click方法的绑定,但没有成功。 另外,我无法更改HTML的结构。

事件:

$("#inner").click(function(e) {
    doThings();
    e.stopPropagation();
});
示例:


JavaScript事件会在DOM树中冒泡,除非您阻止它们传播。这就是导致父事件处理程序收到通知的原因。

您想要
事件。stopPropagation()

$("#inner").click(function(e) {
    e.stopPropagation();
    doThings();
});​

您必须停止向文档树的传播:

$("#inner").click(function(event) {
    doThings();
    event.stopPropagation();
});
见:

防止事件在DOM树中冒泡,防止任何父处理程序收到事件通知


与子元素相关的事件会冒泡到DOM中的父元素,除非传播停止,如下所示:

$("#inner").click(function(event) {
    doThings();
    event.stopPropagation();
});

下面是一篇关于捕获/冒泡和Javascript事件的好文章

您要做的是阻止事件(单击)冒泡。在这种情况下,您可能希望在冒泡阶段停止事件的传播。如果您使用的是jquery,则可以使用以下函数:

HTML

<div id="outer" onclick="thingsHappenOuter()"> 
    <div id="inner">
    </div> 
</div>

请参阅:了解更多信息。

返回false
事件的效果不完全相同。stopPropagation
方法被认为是有害的。请参阅以了解更多解释否,它们没有相同的效果
return false
阻止链接的默认操作发生,停止事件的传播,并立即从事件处理函数返回。噢,哎呀,我不知道!谢谢你们的标注,伙计们,修复。是的,因为jQuery就是这样设计的。
$("#inner").click(function(event) {
    doThings();
    event.stopPropagation();
});
<div id="outer" onclick="thingsHappenOuter()"> 
    <div id="inner">
    </div> 
</div>
$("#inner").click(function(event) {       
    event.stopPropagation();
    // do something     
});