Partage
  • Partager sur Facebook
  • Partager sur Twitter

[jQuery] Créer un espace de nom pour plugin

appeler une fonction depuis un autre script

Sujet résolu
    2 novembre 2010 à 20:14:00

    Bonjour,

    Dans le cadre du développement de mon plugin, j'aimerais créer un espace de noms pour faire plus propre et être sûr de n'avoir aucun conflit.

    Voici le début de mon plugin :

    (function($) {
    	$.fn.jform = function(params) {
    	
    	var defaults = {
    	tag: 'input',
    	disabled: false
    	};
    	
    	p = $.extend(defaults, params);
    
    		function inputText($t) {
    
    		}
    
    	};
    })(jQuery);
    


    A l'appel je voudrais écrire $('.class').jform.input(); (où jform et l'espace de nom et input une méthode).

    Actuellement j'ai $('.class').jform(); et je passe en paramètre la méthode que je souhaite exécuter, ce qui ne me plaît pas trop.

    J'ai vu qu'on créait un espace de nom comme ceci : $.myNamespace = { .. }; mais je vois pas où le placer. J'ai essayé tout au début du plugin et raté...

    Merci beaucoup ! :)
    • Partager sur Facebook
    • Partager sur Twitter
      3 novembre 2010 à 10:45:10

      Il est inutile de m'envoyer un MP pour que je vienne lire ce sujet, Desolation.

      Etant donnée ma présence quasi-continue sur ce forum, tu devrais te douter que j'ai déjà lu ton topic... et que si je n'y ai pas répondu, c'était volontaire.


      Dans la doc de jQuery, ils recommandent de passer en paramètre le nom de la méthode, comme tu le faisais.


      Au pire, tu pourrais renvoyer un objet personnalisé lors de l'exécution de la fonction jform(), pour ainsi y mettre les méthodes de ton choix. Ca brise la "chainability" de jQuery, m'enfin.

      L'idée serait donc d'utiliser comme ceci :

      var $objet = $('.class').jform();
      $objet.input();
      
      • Partager sur Facebook
      • Partager sur Twitter
        3 novembre 2010 à 10:57:03

        Ok désolé.

        Merci d'avoir répondu. Je n'ai pas entièrement saisi.

        Si dans l'appel de la fonction je mets :
        $(document).ready(function() {
        	var $objet = $('.form1').jform();
        	$objet.inputText({
        		label:		'Zone de texte : ',
        		id: 		1,
        		name:		'test',
        		size:		12,
        		value:		'lu',
        		css:		'zone'	
        	});
        });
        


        Cela renvoie $objet is undefined
        Comment dois-je organiser le script du plugin ? Jusqu'à présent je passe une mappe de paramètres à jform().

        (function($) {
        
        $.fn.jform = function(params) {
        	
        	var defaults = {
        	tag: 'input',
        	disabled: false
        	};
        	
        	p = $.extend(defaults, params);
        }
        
        		function inputText($t) {
        		var $l = $('<label></label>');
        		var $i = $('<input type="text"/>');
        		$t.prepend($i);
        		$t.prepend($l);
        		
        		$l.prepend(p.label);
        		$l.attr('for', p.id);
        		
        		$i.attr('id', p.id);
        		$i.attr('name', p.name);
        		$i.attr('size', p.size);
        		$i.attr('value', p.value);
        		(p.disabled == true) ? $i.attr('disabled', 'disabled') : $i.removeAttr('disabled');
        		$i.addClass(p.css);
        		}
        
        })(jQuery);
        
        • Partager sur Facebook
        • Partager sur Twitter
          3 novembre 2010 à 11:06:22

          Comme ça ?

          (function($) {
          
            $.fn.jform = function() {
              /* Initialisation ? */
            
              return {
                inputText : function(params) {
                  var defaults = {
                    /* ... */
                  };
                  
                  /* ... */
                }
              };
            }
          
          })(jQuery);
          
          • Partager sur Facebook
          • Partager sur Twitter
            3 novembre 2010 à 12:31:38

            Merci encore pour ton aide. Cela fonctionne bien. ;)
            • Partager sur Facebook
            • Partager sur Twitter

            [jQuery] Créer un espace de nom pour plugin

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown