2009-12-14 9 views
3

Quelqu'un connaît-il des plugins jQuery pouvant fonctionner avec un objet d'options dynamiques?Objet d'options dynamiques pour le plugin jQuery (exemples de)

Ce que je veux dire est, je dois être en mesure de passer:

$('div').somePlugin({title : 'title1', label : function(element){}, etc.}); 

et aussi

$('div').somePlugin({name : 'name1', url : function(element){}, 
        event : 'event1', etc.}); 

donc l'objet d'options a besoin de la possibilité d'avoir un nombre variable d'éléments, clés les noms et les valeurs qui peuvent être soit statiques soit fonctionnelles. Si c'est une fonction, je dois pouvoir évaluer la fonction avant de passer la valeur du plugin.

Je réalise qu'il est difficile pour vous de vraiment aider sans plus de détails, c'est pourquoi j'ai pensé que je devrais voir si je peux apprendre à partir d'exemples, il pourrait déjà y avoir quelque chose comme ça.

Merci.

+1

Il est préférable de commencer ici sur StackOverflow avec votre meilleur pied vers l'avant. La meilleure façon de le faire est de marquer les réponses comme «acceptées» en cliquant sur la coche verte à côté de la réponse. La question que vous avez posée plus tôt: http://stackoverflow.com/questions/1897553/jquery-iterate-over-object-with-each a été correctement répondue par @cletus et devrait être acceptée. Juste essayer de vous aider :) Bienvenue à SO par la façon! –

+0

Je ne m'en suis pas rendu compte, merci de me l'avoir dit! Je l'ai fait, et merci pour l'accueil. J'ai hâte de contribuer bientôt! – pthesis

+0

@pthesis Content de vous aider! –

Répondre

1

Utilisez le typeof opérateur:

jQuery.fn.somePlugin = function(p) { 
    if (typeof p == "function") { 
    var params = p(); 
    } else if (typeof p == "object") { 
    var params = p; 
    } 
    return this.each(function(){ 
    // use params 
    }); 
}; 

Si vous êtes passé dans un objet, il peut avoir des propriétés variables (nom et numéro) et les valeurs de celles-ci peuvent facilement être des fonctions, des objets, des valeurs simples ou peu importe.

+0

Dans ma situation, p est un objet qui contient des propriétés à la fois des objets et des fonctions, donc je passerais en revue p en utilisant $ .each? – pthesis

+0

Vous pouvez le faire, mais votre question n'est pas assez précise pour que je comprenne ce que vous essayez de faire exactement. – cletus

+0

Je travaille sur un plugin jQuery pour Woopra. Je pense que j'ai résolu le problème. J'apprécie vraiment votre aide! – pthesis

0

Deux plugins qui me viennent à l'esprit utilisent un motif similaire.

  1. J'aidé à écrire celui-ci, et construire l'option de rappel navigationFormatter: AnythingSlider. Les notes sur le fonctionnement de l'option navigationFormatter se trouvent dans le haut du source file.

  2. La seconde est jQuery Autocomplete. Les formatItem, formatMatch et formatReturn utilisent tous un motif similaire.

+0

Merci Doug. Je regarde ces deux plugins. – pthesis