Плагин jQuery: Добавление функциональности Обратного вызова

Я пытаюсь дать свою сменную функциональность обратного вызова, и я хотел бы за нее действовать несколько традиционным способом:

myPlugin({options}, function() {
    /* code to execute */
});

или

myPlugin({options}, anotherFunction());

Как я обрабатываю тот параметр в коде? Это рассматривают как один полный объект? Я вполне уверен, я знаю, куда я поместил бы подлежащий исполнению код, но как я заставляю код выполняться? Я, может казаться, не нахожу большую литературу по теме.

83
задан ROMANIA_engineer 26 September 2018 в 11:06
поделиться

3 ответа

Просто выполните обратный вызов в плагине:

$.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
    }
});
164
ответ дан 24 November 2019 в 08:50
поделиться

Измените функцию вашего плагина на возьмите второй параметр. Предполагая, что пользователь передает функцию, этот параметр можно рассматривать как обычную функцию.
Обратите внимание, что вы также можете сделать обратный вызов свойством параметра options.

Например:

$.fn.myPlugin = function(options, callback) {
    ...

    if(callback)        //If the caller supplied a callback
        callback(someParam);

    ...
});
1
ответ дан 24 November 2019 в 08:50
поделиться

Не знаю, правильно ли я понял ваш вопрос. Но для второй версии: это вызовет немедленно anotherFunction .

В основном ваш плагин должен быть какой-то функцией, которая выглядит следующим образом:

var myPlugin = function(options, callback) {
    //do something with options here
    //call callback
    if(callback) callback();
} 

Вы должны предоставить функцию объект как обратный вызов, так что либо function () {...} или anotherFunction (без () ).

5
ответ дан 24 November 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: