DOM 要素に設定されていない jQuery を使用してカスタム イベントを作成したいと考えています。
jQueryの説明では、次のように述べています。
jQuery.event.trigger('test');
カスタムイベントをトリガーすることです。
しかし、どうすればそれを捕まえることができますか??
thx事前に
DOM 要素に設定されていない jQuery を使用してカスタム イベントを作成したいと考えています。
jQueryの説明では、次のように述べています。
jQuery.event.trigger('test');
カスタムイベントをトリガーすることです。
しかし、どうすればそれを捕まえることができますか??
thx事前に
私はあなたがそのカスタムイベントについて尋ねていると思います(少なくとも私がキャッチしようとしても意味がありませんでしたtrigger
):それは.bindで行われます:
$('some_selector').bind('test', function() {
console.log('Test was caught'); }
);
更新:実際にはいいえ、セレクターは必要ありません-イベントの「ホスト」になるオブジェクトだけです。次のようなものを使用できます。
// taken from the comments at the Doc page
var o = {length: 3};
$(o).bind( 'custom', function(){ console.log('hi') } );
$(o).trigger('custom');
// Output
hi
hi
hi
皆さんは質問を見逃していると思います。彼は、オブジェクトでトリガーされたイベントをリッスンする方法を尋ねているわけではありません。彼は、jQuery.event.trigger() を通じて直接トリガーされるイベントをリッスンする方法を尋ねています。
http://www.sitepoint.com/jquery-custom-events/で本当に素晴らしい記事を見つけました。
基本的に、ドキュメント オブジェクトをリッスンするだけです。
$(document).on("test", function(event, data) {
console.log(data)
});
$.event.trigger('test', [{ foo: 'bar' }]);
次のように、イベントのターゲット要素を jQuery.event.trigger() に渡す必要があります。
jQuery.event.trigger('test', null, element);
それをキャッチしたいときは、次を使用できます。
$(element).on('test', fn);
jQuery ソースで jQuery.event.trigger の定義と使用法を見つけることができます。
jQuery のソース コードを読むと、jQuery.event.trigger の定義が見つかります。
jQuery.event = {
...
trigger: function( event, data, elem, onlyHandlers ) {...}
...
}
(これは、jQuery のパブリック インターフェイスではなく、内部使用のみを目的としています。)
と使用法:
jQuery.fn.extend({
...
trigger: function( type, data ) {
return this.each(function() {
jQuery.event.trigger( type, data, this );
});
},
triggerHandler: function( type, data ) {
var elem = this[0];
if ( elem ) {
return jQuery.event.trigger( type, data, elem, true );
}
},
...
});
方法は次のとおりです。
$(document).bind('test', function (e) {
// handler code here...
});