2013-02-18 112 views
0

(jsbin)jquery stopPropagation()并发送“事件”?

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

enter image description here

表具有onclick事件并且还内侧按钮

但当林按下按钮,则事件冒泡到表中。 (我得到2个警报)

所以我用ev.stopPropagation();

而且其工作。但是,为了为它工作,我不得不这样做:

在HTML:

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

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

回答

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

我不明白你的答案。 html元素是否应该发送事件?如果是这样,为什么你会检查window.event?你会把它放在'e'中。... – 2013-02-18 08:42:11

+0

对不起,我更新了答案 – phnkha 2013-02-18 09:06:15

1

我看不出什么错,是的,你需要parametrise事件,所以你可以在它调用stopPropagation()你事件处理器。