-1

aユーザーがリンク(つまりタグ)をクリックするたびにアラートが表示され、リンクが実際に別の場所にジャンプしないように、JQueryを作成しようとしています。

$(document).ready(function() { 
    $(document.body).on('click',"a",function(event){ 
        event.preventDefault();
        alert("Hello!"); 
    });  
});

このファイルのリンクは実際には HTML コードではなく、他の JavaScript によって挿入されています。アラートは機能しますが、デフォルトは防止されません。これはどのように修正できますか?

4

1 に答える 1

2

やり取りが多すぎてチャットでトラブルシューティングが行われたため、この質問を終わらせるために...

誰もが正しかった、コードは完全に動作します。OPが抱えていた問題は、別のコードがeventListenerを追加していたことです。これは追跡できなかったため、ソース ファイルを掘り下げることによってのみ出現する可能性があります。アプリケーション全体が jQuery を使用している場合、jQuery はアタッチされているすべてのイベントを認識しているため、提案されたトラブルシューティングに似た方法でイベントを表示し、追加/削除する行を掘り下げるのに役立ちます。$._data( $("a")[0], "events" );

OP のように、addEventListener を使用してバニラ (通常の) JS イベントを追加する知らないコードになってしまった場合、要素の eventListeners をリストする方法がないため、デバッグはそれほど簡単ではありません。ただし、このコードを、ページで実行される VERY FIRST js コードとして追加することで、小さなプロトタイプのハックが役に立ちます (タグに入れるだけです)。

var sourceAEL = Element.prototype.addEventListener;
Element.prototype.addEventListener = function(type, listener){
    console.log('Type: '+type);
    debug;//Will stop the code from executing allowing debugging in browser console (and thus know what calls it)
    sourceAEL.apply(this,[type,listener]);
};
于 2013-09-06T21:29:43.780 に答える