2010-04-11 7 views
2

J'utilise un plugin jQuery qui a ses fonctions définies comme telles:JavaScript/jQuery définitions de la fonction sténographie

$('#mydiv').pluginAction({ 
     someproperty: val, 
     format: 'mm hh', 
     labels: ['yes', 'no', 'maybe'], 
     labels1: ['never', 'always'] 
    }); 

Dans ma page HTML, j'ai plusieurs DIVs qui ont les mêmes propriétés pour format, labels , labels1, mais des valeurs différentes pour someproperty. Existe-t-il un type de notation JavaScript dont je peux profiter pour raccourcir la définition afin de ne pas avoir de code en double?

+1

Certains plugins vous permettent d'envoyer un littéral d'objet pour remplacer les paramètres par défaut du plug-in. Vous pouvez l'utiliser pour vous les valeurs qui ne changent pas. –

Répondre

6

Il y a deux façons de traiter ceci:

  1. Créer une fonction qui remplit les blancs; ou

  2. Si le plug-in est le vôtre, valeur par défaut ces valeurs à ce que vous voulez.

Exemple de (1):

function props(val) { 
    return { 
    someproperty: val, 
    format: 'mm hh', 
    labels: ['yes', 'no', 'maybe'], 
    labels1: ['never', 'always'] 
    }; 
} 

$("#mydiv").pluginAction(props("...")); 
4

Cletus a une très bonne réponse, ce qui vous permet de produire un code très lisible. C'est probablement la meilleure solution dans votre cas.

Pour la petite histoire, quelque chose comme ce qui suit serait également possible. Vous pouvez créer un objet de stockage littéral toutes les propriétés fixes, puis il suffit de spécifier ajouter des propriétés supplémentaires (telles que someProperty dans votre exemple) en cas de besoin à l'aide jQuery#extend.

var props = { 
format: 'mm hh', 
labels: ['yes', 'no', 'maybe'], 
labels1: ['never', 'always'] 
}; 

$('#mydiv').pluginAction($.extend(props, { someProperty: val })); 
+1

+1 pour l'utilisation de $ .extend –

1

Il n'y a rien de mal à dupliquer ce genre de code. En fait, il est clair quel genre de comportement s'applique sur ce div donné. Si toutefois vous parlez de centaines de duplications, utilisez ce que les autres ont suggéré.

Questions connexes