リッスンするイベントがない場合.on()
の代わりにjqueryメソッドを使用することは可能ですか?.delegate()
ドキュメントによると.on()
:
.on( イベント [, セレクタ] [, データ] , ハンドラ(イベントオブジェクト) )
events
引数はオプションではありません。
.on()
/の使用は、.delegate()
動的に追加される要素用です。
リッスンするイベントがない場合.on()
の代わりにjqueryメソッドを使用することは可能ですか?.delegate()
ドキュメントによると.on()
:
.on( イベント [, セレクタ] [, データ] , ハンドラ(イベントオブジェクト) )
events
引数はオプションではありません。
.on()
/の使用は、.delegate()
動的に追加される要素用です。
カスタムイベントを使用できます:(それはまだイベントですが、あなたのイベントです)
マークアップ:
<div id='mePlease'>
<div id='noWay'>Hi</div>
</div>
$('#mePlease').on('wacky','#noWay',function(){
alert('wackyEnough');
});
$('#noWay').trigger('wacky');
しかし実際には、これは単純な関数呼び出しで実行できます。
これらの関数の目的は、機能をイベントに委譲することです。いいえ、これらの関数呼び出しのいずれからも events パラメータを省略できません。
あなたが望むのは、ページの読み込み後に(非同期的に)読み込まれるいくつかの要素に「何かをする」ことだと思いますよね?ページの読み込み時に既に存在する要素に対しても、このようなことを行う必要があるのではないでしょうか?
その場合、宣言を関数でラップし、ページの読み込み時と非同期呼び出しの完了時にその関数を呼び出すことをお勧めします。
イベントハンドラを特定の要素にアタッチすることを目的としているため.on()
、イベントなしで使用することはまったく意味がありません。そのため、イベント パラメータが必要です。
ドキュメントから:
説明: 1 つまたは複数のイベントのイベント ハンドラー関数を、選択した要素にアタッチします。