2011-07-15 14 views
2

既存の要素にイベントハンドラが接続されているかどうかを確認できますか?シンプルなjavascriptメソッドがいくつかのdiv.example(sans jquery)にclickイベントを追加すると、属性タグが存在しないので、jqueryを使用して添付されたイベントをキャプチャすることは可能でしょうか?私は、以下のコードを使用してこれを達成しようとしました:jqueryを使用して特定の要素のすべてのイベント(click、change、onmouseover、e.t.c)を取得します。

$('.example').each(function() { 
var newObj = $(this); 
$.each($(newObj).data("events"), function(i, event) { 
    alert(i); 
     $.each(event, function(j, h) { 
      alert(h.handler); 
     }); 
}); 

});

+2

を試してみてください。 – pimvdb

+0

[ここ](http://stackoverflow.com/questions/1515069/jquery-check-if-event-exists-on-element)に記載されている方法を使用して、すべてのイベント(および関連するハンドラ)を取得できます。 –

+2

また、 '$( '#...')とは何ですか?ドキュメントごとに1つのIDしかないとうまくいきます。 – pimvdb

答えて

0

は `$($(this)を)`実行する必要はありません。この

$('#elm1').each(function() { 

$.each($(this).data("events"), function(i, event) { 
     alert(i); 
     $.each(event, function(j, h) { 
      alert(h.handler); 
     }); 
}); 
}); 
+1

jQueryの.data()はjQueryに固有です。これは、 "jQueryを使用してバインドされていない"イベントでは常に機能しません。 – DefyGravity

+0

はい、jQueryライブラリを使用している場合にのみ使用してください。 – ShankarSangoli

+0

.data()は、jQueryオブジェクトを介して作成/添付されたイベントに固有のものであることに気づいていませんでした。早速のご返事ありがとうございます。私は代わりにこれを釣るために定期的なjavascriptを使用します。 – stavarotti