2013-08-25 67 views
0

有人可以幫我解決onclick事件的泡沫效應嗎?Onclick事件冒泡

我得到這個:

<script language="javascript"> 
    function1(){ 
    alert('test'); 
    } 
    function2(){ 
    alert('test'); 
    } 
</script> 
<div onclick="function1()"> 
    <span onclick="function2()">test</span> 
    blablablabla 
</div> 

現在,當我點擊跨度,我不想功能1開始,只是功能2.如何做到這一點?我是否必須編輯函數,或者添加更多的全局java到這個?

+4

「全局java」 - Java是_not_ Javascript。不要混淆兩者。 – 2013-08-25 22:34:44

回答

3

更改您的function2附件是這樣的:

<span onclick="function2(event)"> 

然後,在函數中:

function function2(e) { 
    if (e.stopPropagation) { 
     e.stopPropagation(); 
    } 
    else { 
     e.cancelBubble = true; 
    } 
} 

我們正在做的有:

  1. 給函數事件對象的可見性(將其從onclick傳入
  2. 告訴它不氣泡,或者通過使用stopPropagation(DOM標準)或cancelBubble(IE特異性)

很多這方面的東西可以通過使用一個體面的JavaScript/DOM庫等製成簡單jQueryYUIClosureany of several others。這些平滑的瀏覽器差異等。