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);
}
});