9

DOM 要素に設定されていない jQuery を使用してカスタム イベントを作成したいと考えています。

jQueryの説明では、次のように述べています。

jQuery.event.trigger('test');

カスタムイベントをトリガーすることです。

しかし、どうすればそれを捕まえることができますか??

thx事前に

4

4 に答える 4

11

私はあなたがそのカスタムイベントについて尋ねていると思います(少なくとも私がキャッチしようとしても意味がありませんでした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
于 2012-06-21T06:24:22.867 に答える
7

皆さんは質問を見逃していると思います。彼は、オブジェクトでトリガーされたイベントをリッスンする方法を尋ねているわけではありません。彼は、jQuery.event.trigger() を通じて直接トリガーされるイベントをリッスンする方法を尋ねています。

http://www.sitepoint.com/jquery-custom-events/で本当に素晴らしい記事を見つけました。

基本的に、ドキュメント オブジェクトをリッスンするだけです。

$(document).on("test", function(event, data) {
  console.log(data)
});

$.event.trigger('test', [{ foo: 'bar' }]);
于 2015-09-17T14:04:28.197 に答える
0

次のように、イベントのターゲット要素を 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 );
        }
    },
...
});
于 2015-04-11T02:08:46.140 に答える
0

方法は次のとおりです。

$(document).bind('test', function (e) {
  // handler code here...
});
于 2015-06-24T12:29:03.520 に答える