Javascript 用onclick重叠两个元素

Javascript 用onclick重叠两个元素,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有两个HTML元素,每个元素都有自己的onclick事件。 代码示例: <table> <tr> <td onclick="expand('table2')"> <div> name<img src="img.gif" onclick="open_popup()"> </div> </td> </tr> <tr>

我有两个HTML元素,每个元素都有自己的onclick事件。 代码示例:

<table>
  <tr>
    <td onclick="expand('table2')">
      <div>
        name<img src="img.gif" onclick="open_popup()">
      </div>
    </td>
  </tr>
  <tr>
    <td>
      <table id="table2"><tr><td>some text</td></tr></table>
    </td>
  </tr>
</table>
<script type="text/javascript">
function expand(tableid){
   $("#"+tableid).slideToggle();
}
function open_popup(){
   alert('popup opened');
}
</script>
问题是,如果我想单击图像并打开弹出窗口,它也会触发展开功能,那么是否有任何方法或建议我可以用来使单击图像仅触发图像事件,而不在展开功能中触发?我正在寻找一个解决方案,不需要我改变目前的布局

我的目标是使图像单击触发open_弹出函数,而在图像周围但在表行内的任何单击都会触发其他函数


谢谢你们

我相信你们的问题和点击事件向上传播有关

您要做的是将event.stopPropagation添加到函数中。 因此,您的函数应该如下所示:

function open_popup(event){ 
    event.stopPropagation();
    alert('popup opened');
}
以下是有关传播的更多信息的链接:

您是否尝试将event.stopPropagation添加到打开弹出功能?我同意event.stopPropagation。这里有一个很好的解释:您需要停止事件的传播或冒泡。请通读以下内容:@CodingEnthusiast如果你已经在这里呆了足够长的时间,你应该知道一张桌子里的一张桌子并不是什么不寻常的事情,很多网站都是在大约7/8年前建立起来的。谢谢你提供的信息。我将尝试停止传播。