2009-07-19 7 views
2

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

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

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

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

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

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

ответ

2

Нет необходимости создавать общий объект данных. Вы можете открыть некоторые функции одного плагина для других плагинов с помощью простого оператора 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

приятно. Я знаю, что это возможно. благодаря :) –

0

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

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

, Вам не нужно определить объект для него, но он делает вещи более ясными.

+0

Я хочу вызвать функцию, которая является pluginBar из функции pluginFoo. Как мне это сделать? –

Смежные вопросы