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()作为数组传递给。(一个参数可以在没有数组的情况下传递。)

$(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 回答