0

(jsbin)

中にボタンがあるテーブルを作成しました。

ここに画像の説明を入力

テーブルにはonclickイベントがあり、内側のボタンもあります

しかし、ボタンを押すと、イベントがテーブルに泡立ちます。(そして私は2つのアラートを受け取ります)

だから私は使った ev.stopPropagation();

そしてその働き。しかし、それが機能するためには、次のことをしなければなりませんでした:

htmlで:

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

Js で:

function doWork(ev)
{
  ev.stopPropagation();
  alert('button');
}
  • これは正しい方法ですか?
  • イベントを送信する必要がありますか? ブラウザが異なれば、event.
4

3 に答える 3

2

IE ではイベント オブジェクトを渡す必要がなく、window.event を使用してアクセスできます。古い IE バージョンは e.stopPropagation をサポートしていません。したがって、ブラウザ間の互換性の理由から、これを試す必要があります。

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

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

    alert('button');
}
于 2013-02-18T08:33:36.110 に答える
1

これには何も問題はありません。はい、イベント ハンドラーで stopPropagation() を呼び出すことができるように、イベントをパラメーター化する必要があります。

于 2013-02-18T08:34:40.810 に答える
1

これは別の方法です:

<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');
  }
}
于 2013-02-18T09:07:04.800 に答える