Передача анонимной функции в пользовательский триггер события в Javascript / jQuery - PullRequest
4 голосов
/ 18 июня 2011

Я пытаюсь вызвать пользовательские события на элементах 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» должно вызвать «custom_event» на «some-dom» и привести к выполнению анонимной функции, которую я передал по триггеру. Правильно? Но браузер говорит, что обратный вызов не определен в пользовательском событии. Я делаю что-то неправильно? Разрешено ли передавать анонимные функции в качестве аргументов триггера? Спасибо

Ответы [ 2 ]

7 голосов
/ 18 июня 2011

Вам необходимо передать несколько дополнительных аргументов в 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/

0 голосов
/ 18 июня 2011

Вы можете сделать это так:

$('#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]);
});

Вот доказательство концепции .

...