2009-07-19 9 views
2

Dites que j'ai un plugin jQuery comme $ .abc = function() {}. Maintenant, je veux fournir un module supplémentaire qui utilise la même portée que $ .abc et étend ses fonctionnalités. Par exemple dans mon plugin abc je vais vérifier si dis une variable mod1 = true; si c'est vrai, alors j'appellerai automatiquement ces fonctions de mod1.Extension d'un plugin jQuery

Ma question est de savoir comment j'écris mod1 afin qu'il puisse partager le même espace de noms que mon plugin de base et je suis capable de l'appeler à partir de mon plugin par exemple. mod1.getFiles();

Merci pour votre temps. Désolé si ce n'est pas très clair. Je vais vous expliquer à nouveau si vous avez des questions.

MISE À JOUR: Comment appeler le test de fonctionnement du pluginbar?

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

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

Répondre

2

Il n'est pas nécessaire de créer un objet de données partagé. Vous pouvez exposer certaines fonctionnalités d'un plugin à d'autres plugins en utilisant simplement l'instruction 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

bien. Je savais que c'était possible. Merci :) –

0

Vous voulez deux plugins pour accéder à un ensemble partagé de données/fonctions, vous pouvez le faire comme ceci:

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

Vous n'avez pas réellement besoin de définir un objet pour elle, mais rend les choses plus claires.

+0

Je veux appeler une fonction qui est pluginBar de la fonction pluginFoo. Comment je fais ça? –