Расширить плагин jQuery - PullRequest
2 голосов
/ 19 июля 2009

Скажем, у меня есть плагин jQuery, такой как $ .abc = function () {}. Теперь я хочу предоставить дополнительный модуль, который использует ту же область действия, что и $ .abc, и расширяет его функциональность. Например, в моем плагине abc я проверю, скажем, переменную mod1 = true; если это правда, то я буду автоматически вызывать те функции mod1.

У меня вопрос, как мне написать mod1, чтобы он мог использовать то же пространство имен, что и мой базовый плагин, и я могу вызвать его из моего плагина, например mod1.getFiles ();

Спасибо за ваше время. Извините, если это не очень понятно. Я объясню еще раз, если у вас есть какие-либо вопросы.

ОБНОВЛЕНИЕ: Как я могу вызвать функцию проверки плагинов?

$.fn.pluginFoo = function() {
    ...
     CALL FUNCTION TEST OF PLUGINBAR
    ...
};

$.fn.pluginBar = function() {
    ...
    function test() {
        alert('this is a test'); 
    }
    ...
};

Ответы [ 2 ]

2 голосов
/ 19 июля 2009

Нет необходимости создавать общий объект данных. Вы можете предоставить некоторые функциональные возможности одного плагина другим плагинам, просто используя оператор return.

$.fn.pluginFoo = function () {
     // here you can access public "members" of pluginBar
     $.fn.pluginBar.fn3();
     $.fn.pluginBar.fn4();
}


$.fn.pluginBar = function () {
    // private "members" (only this plugin can access them)
    var fn1 = function () { ... }
    var fn2 = function () { ... }

    // public "members" (other plugin can access that as well)
    // fn3 is defined in the return, fn4 allows to access private function fn1
    return {
        fn3: function () { ... },
        fn4: fn1
    };
}
0 голосов
/ 19 июля 2009

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

var myPluginData = {
    flag: true,
    alertNothing: function() {
        alert('I do Nothing');
    }
};

$.fn.pluginFoo = function() {
    ...
    myPluginData.flag = false;
    myPluginData.alertNothing();
    ...
};

$.fn.pluginBar = function() {
    ...
    myPluginData.alertNothing();
    myPluginData.flag = true;
    ...
};

На самом деле вам не нужно определять объект для него, но это все проясняет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...