2012-05-11 16 views
1

私は上部の<tr>をクリックし、tr > td > buttonをクリックしてイベントを持っています。 tr > td > buttonをクリックすると、関連するonclick()関数が実行されていますが、<tr>に関連する関数も前の関数の後に実行されています。次の機能の実行を停止するにはどうすればよいですか?

同様:

<tr onclick="run_tr();"> 
    <td><input type="button" onclick="run_td();" /></td> 
</tr> 

私は自動的にボタンをクリックして次の呼び出しを呼び出す方法を停止することができますか?あなたのコードに続いて

event.stopPropagation(); 

HTML:

<input type="button" onclick="run_td(event);" /> 

JS:

function run_td(event) { 
    if (event.stopPropagation) { 
     event.stopPropagation(); 
    } 
    event.cancelBubble = true; 
    // ... rest of your code. 
} 
+1

可能重複[親のonclickイベントを無効にします要素](http://stackoverflow.com/questions/5445719/disable-the-onclick-event-of-a-parent-element) –

+0

インラインスクリプトを避ける必要があります – Joseph

答えて

2

メソッドe.stopPropagation()を使用して、イベントの伝播を停止する必要があります。詳細情報については、このリンクをチェックアウト:http://www.quirksmode.org/js/events_order.html#link9

+2

いいえ、それは間違った方法です...それは、例えばブラウザがリンクをたどるのを防ぎますが、イベントの伝播を止めません。 –

+0

私の回答を更新しました – antyrat

+2

まだ、preventDefault()は問題とは関係ありません... –

1

あなたはイベントのバブリングを停止する必要がボタンonclick機能で

+0

OPの場合:W3CとIEの両方のイベントモデルに対処するために、 'if(event.stopPropagation)event.stopPropagation()'と 'event.cancelBubble = true'の両方を使用することを忘れないでください。 – RobG

+0

うん、忘れてしまった私の答えで言えば、それはリンクされたページに説明されています – 3rgo

+0

私はそれをとにかく使うことができません:(正しく使用する方法は? –

0

あなたがお勧めの方法を使用できない理由を私は理解していないが、ここでの例です:の

<div onclick="alert('div click called');"> 
    Click here to see div onclick 
    <button onclick=" 
    (event.stopPropagation && event.stopPropagation()); 
    event.cancelBubble = true; 
    alert('stopped click'); 
    ">Button click but no div click</button> 
</div> 
関連する問題