Jquery, установить аргументы функции в обратном вызове

Я пытаюсь написать свой первый плагин JQuery, но я сталкиваюсь с некоторыми трудностями.

Фрагменты кода:

Здесь я инициализирую свой плагин и устанавливаю функцию, которая должна выполняться, когда происходит MyEvent.

$("#myMap").MyPlugin({ myEvent: function() { alert("test"); } });

И это функция в моем скрипте плагина

function setEvents(options) {
            $.each(options, function(event, fn) {
                if (typeof (fn) == 'function') {
                    if (event == "myEvent") {
                        $(myDiv).click(fn);
                    }
                }
            });
        }

Это отлично работает, но я хочу получить информацию из плагина, хотя даже происходит. По сути, я хочу получить параметр, который я установил в этой функции "setEvents".

$("#myMap").MyPlugin({ myEvent: function(myParam) { alert(param); } });

Я не могу понять это, кто-то может указать мне в правильном направлении.

ОБНОВЛЕНИЕ: более полный фрагмент моего текущего скрипта плагина

(function($) {
    var defaults = {
        width: 300,
        height: 300,
        myEvent: null
    };

    $.fn.myPlugin = function(options) {
        var options = $.extend(defaults, options); 
        var myDiv = $(this);
        return this.each(function() {
            setEvents(options);
        });
})(jQuery);

1 ответ

Решение

Так как myEvent событие сопоставлено с click Событие от вашего плагина, вы можете передать карту параметров в click(), чтобы она в конечном итоге была передана вашему обработчику:

if (typeof(fn) == "function") {
    if (event == "myEvent") {
        $(myDiv).click({
            param: myParam
        }, fn);
    }
}

Тогда вы можете написать:

$("#myMap").MyPlugin({
    myEvent: function(event) {
        alert(event.data.param);
    }
});
Другие вопросы по тегам