4

DOM要素でカスタムイベントをトリガーし、イベントがトリガーされたときに実行される無名関数を渡そうとしています(jQueryを使用)。だからこのようなもの:

$(some-dom).live("custom_event", function(evtObj, data, callback) {
//do some stuff
callback();
});

$(some-button).click(function() {
    $(some-dom).trigger("custom_event", some_data, function () {
        alert("this is my anonymous function passed as event data");
    }
});

したがって、「some-button」をクリックすると、「some-dom」で「custom_event」がトリガーされ、トリガーに渡した匿名関数が実行されます。右?しかし、ブラウザは、カスタムイベントでコールバックが未定義であると言っています。私は何か間違ったことをしていますか?トリガー引数として無名関数を渡すことは許可されていませんか?ありがとう

4

2 に答える 2

7

trigger()複数の追加の引数を配列としてに渡す必要があります。(1つの引数は配列なしで渡すことができます。)

$(some-dom).click(function() {      //  v-----pass extra args in an Array
    $(some-dom).trigger("custom_event", [some_data, function () {
        alert("this is my anonymous function passed as event data");
    }]);
 //  ^------Array
});

例: http: //jsfiddle.net/NRSJ2/

于 2011-06-17T21:28:31.857 に答える
0

あなたはこのようにそれを行うことができます:

$('#testelement').live("test_event", function(e, myCallback) {
    myCallback();
});

$('#clickme').click(function(e){
    e.preventDefault();

    var myFunc = function () {
        alert("this is my anonymous function passed as event data");
    };

    $('#testelement').trigger('test_event', [myFunc]);
});

これが概念実証です。

于 2011-06-17T21:33:43.323 に答える