2

私はかなり軽量なリアルタイムアプリケーションの開発に取り組んでいます。

jQueryのイベントシステムを使用して、アプリケーション内のモジュール間で通信しています。したがって、モジュールの外部に影響を与えるはずのDOMに変更を加えるものはすべて、イベントによって変更する必要があります。

これらのイベントは、nodejssocket.ioサーバーにイベントを他のすべてのクライアントにブロードキャストするように要求するクライアント側のsocket.io実装によってキャッチされます。

私の質問:イベントがトリガーされたセレクターを把握する方法はありますか?だから私が電話すると

$("tag.class").trigger("myevent");

私はどういうわけかすることができます

$(document).on("myevent", function() {
    console.log(this.selector)
});

そして、「tag.class」を出力します

これは興味深いことです。なぜなら、後で非常にランダムに表示される可能性のあるいくつかの要素で特定のイベントをトリガーするのではなく、ユーザーが選択範囲で特定のイベントをトリガーしたことを知ることは興味深いからです。

この質問を読みましたが、アプリケーションで発生したすべてのイベントでセレクターを取得できるようにしたいと思います。

お時間をいただきありがとうございます:)

4

2 に答える 2

2

リンクされた回答からインスピレーションを得て、jQuerytrigger関数をオーバーライドできます。何かのようなもの:

$.fn.origTrigger = $.fn.trigger;
$.fn.trigger = function (fn) {
  var selector = this.selector;
  this.origTrigger(function (ev) {
    fn(ev, selector);
  });
};
于 2012-10-12T12:16:47.220 に答える
0

最善の策は、イベントとともにデータを送信することです。また、より詳細に制御できるため、より堅牢です。セレクターはきれいではないかもしれませんが、データはきれいです。

$('tag.class').trigger('myevent', ['some', 'param']);

$(document).on('myevent', function(param1, param2) {
    console.log(param1); // "some"
    console.log(param2); // "param"
});

もちろん、必要な数のパラメータを送信する場合は、「options」オブジェクトを使用して、次のように処理できます。

$('tag.class').trigger('myevent', [{some: 'option', other: 'option'}]);

$(document).on('myevent', function(options) {
    var opts = {
        default: 'option',
        some: 'default',
        other: 'default'
    };
    $.extend(opts, options);

    console.log(opts); // {default: "option", some: "option", other: "option"}
});
于 2012-10-12T12:06:20.983 に答える