jquery stopPropagation()和发送"事件"?

时间:2013-02-18 08:28:19

标签: javascript jquery

(jsbin)

我创建了一个内有按钮的表。

enter image description here

表格有onclick个事件,还有里面的按钮

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

所以我使用了ev.stopPropagation();

它的工作。但为了让它起作用,我必须这样做:

in html:

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

在Js:

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

3 个答案:

答案 0 :(得分:2)

IE不需要传递事件对象,我们可以使用window.event访问它。 Old IE versions have not supported e.stopPropagation。因此,出于跨浏览器兼容性的原因,您应该尝试这样做:

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

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

    alert('button');
}

答案 1 :(得分:1)

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

答案 2 :(得分:1)

这是另一个way

<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');
  }
}