在Javascript / jQuery中将匿名函数传递给自定义事件触发器

时间:2011-06-17 21:18:09

标签: jquery callback anonymous-function jquery-callback custom-events

我正在尝试触发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”并导致我在触发器上传递的匿名函数被执行。对?但是浏览器说自定义事件中的回调未定义。难道我做错了什么?是不允许传递匿名函数作为触发器参数?感谢

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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]);
});

这是proof of concept