実際にそれ自体によってトリガーされるカスタム イベントをリッスンする要素が必要です。カスタム イベントは子孫からトリガーされる可能性がありますが、無視する必要があります。それが自分自身に由来することが重要です。イベントをリッスンするために追加の祖先が必要になる場合があるため、これもイベントである必要があります。
.on ( http://api.jquery.com/on/ ) メソッドは、この機能を提供できます。セレクター引数はフィルターとして使用できます。ただし、これはリスナー要素自体を除外するためには機能しません。
要するに:
- イベントはバブリングできる必要があります
- トリガーとリスナーは同じ要素
です - 祖先によってトリガーされた場合、リスナーはカスタムイベントを無視する必要があります
これはどのように達成されますか?
ご要望に応じたユースケース
jquery UI ダイアログ ウィジェットを使用します
$el = $('#dialogDiv');
$el.on('customEvent', $el /* Won't work */, function() {
//Do whatever
});
$el.dialog({
open: function() {
$el.trigger('customEvent');
}
});