何らかの理由で、数値入力に追加の変更ハンドラーがあります。私は一生、それがどこから来ているのかを理解することはできません. このルージュイベントハンドラーの割り当てを追跡する方法を教えてもらえますか? クロム開発ツールで要素を調べてイベントハンドラー領域を見ると、(1) jquery と (2) 未定義を指しているだけです。
3 に答える
jquery によってバインドされたすべてのイベントは$( target ).data( 'events' )
;にあります。イベントの名前には関数の配列が含まれているため、キーを持つオブジェクトを表します。
たとえば、stackoverflow のコンソールでこれを直接試してください
$('a').data('events').click[0].handler
。
jquery オブジェクトによって割り当てられた各イベント タイプのカルバックを一覧表示するには、次を試してください。
$.each( $( youSelector ).data('events'), function(v,k){
console.log( v +":");
$(this).each( function(){
console.log( this.handler );
});
console.log("------------------");
});
それらがどのファイルから来たかを見つける方法は、リソースタブの検索入力でコンソールのハンドラーコードの一部から検索することです:)
他のハンドラーが望ましくない場合は、いつでも使用できますunbind
。
$("#id").unbind('change').bind("change", handler);
もちろん、考えられるすべてのケースを考慮する必要があるため、完全なソリューションは次のようになります。
$("#id")
.off('change')
.die('change')
.unbind('change')
.on("change", handler);
これらの答えは私が探していたものではありませんでしたが、ハンドラーがどこから来ているのかを知ることができました。私はwebshimsとoverlayと呼ばれるjqueryツールを使用しています。どうやら、オーバーレイは、ページがレンダリングされたときと、オーバーレイが実際に適用されたときに、scriptタグのコードを実行しているようです。