0

インラインハンドラーでイベントをインターセプトし、伝播を停止することにより、クリックハンドラーをオーバーライドしようとしています (ここから取得した伝播を無効にするコード)。

次のコードは、伝播を停止しないだけでなく、インライン ハンドラを起動することさえしません。何が悪いのかわかりません。

フィドル: http://jsfiddle.net/trKN4/3/

HTML:

<a onclick='stopIt(event);'>do it</a>​

JS:

function disableEventPropagation(event)
{
   if (event.stopPropagation){
       event.stopPropagation();
   }
   else if(window.event){
      window.event.cancelBubble=true;
   }
}

function stopIt(event) {
    disableEventPropagation(event);
    alert('dont do it');
}


$(function() {

    $('a').click(function(e){
        alert('im doing it');
    });                   

});
4

1 に答える 1

1

jsFiddleはすべてのコードをonloadハンドラーでラップし、ハンドラーの到達可能なスコープから外しているため、インライン関数は実行されません。

no wrap左側のメニューからオプションを選択します。

デモ:http: //jsfiddle.net/trKN4/4/

ここに画像の説明を入力してください

于 2012-06-05T14:23:04.107 に答える