2014-07-18 103 views
0

我有一個HTML的結構是這樣的:兒童click事件影響的父事件

<table> 
    <tr onclick="alert ('parent event')"> 
     <td> 
      <input type="button" name="click me" value="I'm a button" id="click me" /> 
     </td> 
    </tr> 
</table> 

現在我已經綁定在tr click事件,現在如果我按一下按鈕,就tr該點擊事件也觸發了。

我該如何阻止發生?

+0

顯示我們的按鈕單擊事件中的代碼。 –

+0

@SamuelLiew沒有綁定的事件 – daisy

+0

@SamuelLiew點擊父級上的子觸發器點擊事件。我想阻止,可能嗎? – daisy

回答

-1

太添加一個onclick處理程序的input,在其回調中包含event.stopPropagation()

function(event) { 
    event.stopPropagation(); 
} 
2

您輸入ID更改爲click-me(無空格),然後把這個腳本標記之間:

window.onload = function() { 
    document.getElementById('click-me').onclick = function(e) { 
     e.stopPropagation(); 
     return false; 
    } 
} 

或者您可以簡單地將此代碼置於onclick屬性中:

<input type="button" onclick="event.stopPropagation();" ... 

http://jsfiddle.net/qwk38/

1

你可以像下面那樣解決;

HTML:

<table> 
    <tr onclick="trAlert()" bgcolor="#cccccc" width="300" height="300"> 
     <td> 
      <input type="button" onclick="btnAlert()" name="click me" value="I'm a button" id="click me" /> 
     </td> 
    </tr> 
</table> 

JS

function trAlert() 
{ 
    alert('tr'); 
} 

function btnAlert() 
{ 
    event.stopPropagation(); 
    alert('btn'); 
} 

看到這裏的演示--->http://jsfiddle.net/Junkie/kZ6J6/

0

在冒泡的事件最先捕獲並內最 處理元素,然後傳播到外部元素。

你應該從得到bubbled停止活動,

<table> 
    <tr onclick="alert('parent click')"> 
     <td> 
      <input onclick="event.stopPropagation();" type="button" name="click me" value="I'm a button" id="click me" /> 
     </td> 
    </tr> 
</table> 

Fiddle