このリンクで2つのイベントハンドラをバインドします。
<a href='#' id='Elm'>Show Alert</a>
JavaScript:
$(function()
{
$('#Elm').click(_f);
$('#Elm').mouseover(_m);
});
function _f(){alert('clicked');}
function _m(){alert('mouse over');}
要素、この場合はid="Elm"
を持つ要素にバインドされているすべてのイベントのリストを取得する方法はありますか?
最新バージョンのjQueryでは、$._data
メソッドを使用して、jQueryによって問題の要素に添付されたイベントをすべて見つけることができます。 注、これは内部使用のみの方法です。
// Bind up a couple of event handlers
$("#foo").on({
click: function(){ alert("Hello") },
mouseout: function(){ alert("World") }
});
// Lookup events for this particular Element
$._data( $("#foo")[0], "events" );
$._data
の結果は、設定した両方のイベントを含むオブジェクトになります(下の写真はmouseout
プロパティを展開したものです)。
次にChromeでは、ハンドラ関数を右クリックして[関数定義の表示]をクリックすると、コード内で定義されている正確な場所を確認できます。
一般的な場合:
Sources
タブをクリックしますEvent Listener Breakpoints
までスクロールしてツリーを展開同様に、次のことができます。
Inspect element
"を選択event listeners
'があります。私はこれを後世に追加しています。もっとJSを書く必要のないもっと簡単な方法があります。 Firefox用の 素晴らしいfirebugアドオンを使用する 、
JavaScript関数getEventListeners()を使用して、オブジェクトにバインドされたイベントリスナーのリストを簡単に取得できるようになりました。
たとえば、開発ツールコンソールに次のように入力します。
// Get all event listners bound to the document object
getEventListeners(document);
jQuery Auditプラグイン プラグインを使用すると、通常のChrome Dev Toolsを通じてこれを実行できます。これは完璧ではありませんが、一般的なjQueryハンドラだけでなく、実際のハンドラが要素/イベントにバインドされているのを確認できるはずです。
次のようなものを使用しました。($。data($( "a.wine-item-link")[0])。私の要素が何らかのイベントに結び付けられている場合その要素からすべてのイベントハンドラを接続解除した場合でも、未定義(null)と表示されます。これが私がこれをif式で評価している理由です。
$._data($('#outerWrap .innerWrap ul li:last a'), 'events')
のようにちょっと複雑なDOMクエリを$ ._ dataに渡すと、ブラウザコンソールでは未定義がスローされます。
そのため、aタグのイベントを確認するには、親div:$._data($('#outerWrap')[0], 'events')
に$ ._ dataを使用する必要がありました。これが同じJSFiddleです: http://jsfiddle.net/giri_jeedigunta/MLcpT/4/