0

(jsbin)

我创建了一个表,里面有一个按钮。

在此处输入图像描述

表格有onclick事件,也有内部按钮

但是当我按下按钮时,事件会冒泡到桌子上。(我收到 2 个警报)

所以我用 ev.stopPropagation();

及其工作。但为了让它工作,我必须这样做:

在 html 中:

<input type='button' onclick='doWork(event);'/>

在 Js 中:

function doWork(ev)
{
  ev.stopPropagation();
  alert('button');
}
  • 这是正确的方法吗?
  • 我必须发送事件吗?我知道不同的浏览器使用不同的event.
4

3 回答 3

2

IE 不需要传递事件对象,我们可以使用 window.event 访问它。旧 IE 版本不支持 e.stopPropagation。因此,出于跨浏览器兼容性的原因,您应该尝试以下操作:

function doWork(e)
{
    var evt = e || window.event;

    if (evt.stopPropagation) {
        evt.stopPropagation();
    }
    else {
        evt.cancelBubble = true;
    }

    alert('button');
}
于 2013-02-18T08:33:36.110 回答
1

我看不出有什么问题,是的,您需要对事件进行参数化,以便您可以在事件处理程序中对其调用 stopPropagation()。

于 2013-02-18T08:34:40.810 回答
1

这是另一种方式

<table onclick="doWork();" border=2 style="width:70px;">

<input type='button' onclick='alert("button");'/>

function doWork(ev)
{
  ev = ev || window.event;
  var target = ev.target || ev.srcElement;
  if(target.tagName.toUpperCase() !== 'INPUT'){
    alert('table');
  }
}
于 2013-02-18T09:07:04.800 回答