Я пытаюсь дать свою сменную функциональность обратного вызова, и я хотел бы за нее действовать несколько традиционным способом:
myPlugin({options}, function() {
/* code to execute */
});
или
myPlugin({options}, anotherFunction());
Как я обрабатываю тот параметр в коде? Это рассматривают как один полный объект? Я вполне уверен, я знаю, куда я поместил бы подлежащий исполнению код, но как я заставляю код выполняться? Я, может казаться, не нахожу большую литературу по теме.
Просто выполните обратный вызов в плагине:
$.fn.myPlugin = function(options, callback) {
if (typeof callback == 'function') { // make sure the callback is a function
callback.call(this); // brings the scope to the callback
}
};
Вы также можете иметь обратный вызов в объекте опций:
$.fn.myPlugin = function() {
// extend the options from pre-defined values:
var options = $.extend({
callback: function() {}
}, arguments[0] || {});
// call the callback and apply the scope:
options.callback.call(this);
};
Используйте его так:
$('.elem').myPlugin({
callback: function() {
// some action
}
});
Измените функцию вашего плагина на возьмите второй параметр. Предполагая, что пользователь передает функцию, этот параметр можно рассматривать как обычную функцию.
Обратите внимание, что вы также можете сделать обратный вызов свойством параметра options.
Например:
$.fn.myPlugin = function(options, callback) {
...
if(callback) //If the caller supplied a callback
callback(someParam);
...
});
Не знаю, правильно ли я понял ваш вопрос. Но для второй версии: это вызовет немедленно anotherFunction
.
В основном ваш плагин должен быть какой-то функцией, которая выглядит следующим образом:
var myPlugin = function(options, callback) {
//do something with options here
//call callback
if(callback) callback();
}
Вы должны предоставить функцию объект как обратный вызов, так что либо function () {...}
или anotherFunction
(без ()
).