2

jQuery イベント プラグインを作成しており、引数にデータを渡す必要があります。したがって、次のように使用すると:

$(element).on('myevent', function(event, myargument) { console.log(myargument); });

myargumentオブジェクトとそのプロパティ (例: )を取得したくありませんname。これはハンドラーで設定されています。

では、これは以下のコードでどのように機能しますか?

SmartScroll.myevent = {
    setup: function() {

        var myargumentData,
            handler = function(evt) {
                var _self = this,
                    _args = arguments;

                // The data I wan't to get
                myargumentData = {
                    name: "Hello"
                };

                evt.type = 'myevent';
                jQuery.event.handle.apply(_self, _args);
            };

        jQuery(this).bind('scroll', handler).data(myargumentData, handler);

    },

    teardown: function() {
        jQuery(this).unbind('scroll', jQuery(this).data(myargumentData));
    }
};
4

2 に答える 2

1

に渡されたオブジェクトを変更できますadd

$.event.special.foo = { add: function(h) {
    var hh = h.handler;
    h.handler = function(e, a) {
        hh.call(this, e, a * 2);
    };
} };

それでは、イベントをバインドしましょう。

$("body").on("foo", function(e, a) {
    console.log(a);
});

イベントを発生させて何が起こるか見てみましょう:

$("body").trigger("foo", [ 10 ]); // 20
于 2012-11-14T21:27:33.913 に答える
0
on: function( types, selector, data, fn, /*INTERNAL*/ one ) 

ソースによると。あなたの問題を理解したら、次のことを行ってください。

$(element).on('myevent',{my_data:"foo"},function(event) { 
  console.log(event.data.my_data); 
});

「フー」を出力します

于 2012-11-14T21:17:26.243 に答える