Partage
  • Partager sur Facebook
  • Partager sur Twitter

[jQuery] Utiliser une variable global dans un plugin

Sujet résolu
    26 décembre 2009 à 12:43:07

    Bonjour à tous,

    Je suis en train de créer un plugin dialog personnel car celui proposé par jQuery UI ne me convient pas (on ne peux pas appliqué réellement de design personnalisable.

    Je crée donc mon plugin et j'aimerai avoir une variable se baladant dans tout le plugin contenant le zIndex de la fenêtre la plus haute existante.

    Par exemple, la variable serait initialisé à 1000 et pour chaque nouvelle fenêtre le zIndex serait incrémenter.

    Voilà le corps basique de mon plugin :

    $.fn.myDialog = function(options)
    {
    		//  Options
    
    		
    	var zIndex = 1000;
    	var settings = {
    		
    	};
    	
    	options = $.extend(settings, options);
    	
    		// Each	
    	
    	this.each(function()
    	{
    		init($(this));		
    	}); 
    	
    	
    	/*
    	 *			INIT
    	 ****************************************/
    	 
    		// Init
    	
    	function init(me)
    	{		
    	
    		alert(zIndex);
    		zIndex++;
    	}
    
    	
    };
    


    Mais je ne me retrouve qu'avec des alerts à 1000 et jamais à 1001, 1002, 1003 ....


    Comment je dois m'y prendre pour rendre cette variable global à tous ?
    • Partager sur Facebook
    • Partager sur Twitter
      26 décembre 2009 à 12:48:29

      $.fn.myDialog = (function() {
      	var zIndex = 1000;
      	
      	return function(options) {
      		//  Options
      	
      		
      		var settings = {
      			
      		};
      		
      		options = $.extend(settings, options);
      		
      			// Each	
      		
      		this.each(function()
      		{
      			init($(this));		
      		}); 
      		
      		
      		/*
      		 *			INIT
      		 ****************************************/
      		 
      			// Init
      		
      		function init(me)
      		{		
      		
      			alert(zIndex);
      			zIndex++;
      		}
      	
      		
      	};
      })();
      



      Essaies ça pour voir.
      • Partager sur Facebook
      • Partager sur Twitter
        26 décembre 2009 à 12:53:11

        Hum oui ça marche niquel, mais je ne comprend pas la différence... ?

        Peux tu me faire un petit cour rapide ??

        Merci à toi en tout cas
        • Partager sur Facebook
        • Partager sur Twitter
          26 décembre 2009 à 13:55:07

          Huuum, pour faire simple, une variable a comme porté, le "niveau" actuel et tout les niveaux enfant.

          {
          	var a = 1;
          	{
          		var b = 1;
          		{
          			var c = 1;
          			
          			// a b et c existent ici
          		}
          		
          		// c n'existe pas ici, a et b oui
          	}
          	
          	// b et c n'existe pas ici
          }
          




          Dans ton cas, tu faisais ça en gros :

          var compteur = function() {
          	var i = 0;
          	return i++;
          };
          


          Mais le problème est que tu remettais la valeur 0 a chaque fois, donc ton compteur ne marchait pas.

          Moi j'ai fais :

          var compteur = (function() {
          	var i = 0;
          	// i = 0
          	// Je renvoi une fonction, qui augmente i, donc au final, compteur = function() { return i++; }
          	return function() {
          		// J'incremente i
          		return i++;
          	};
          })(); // ici, j'utilise (), ça veut dire que j'execute ma fonction imediatement
          


          Donc en fait, je défini une valeur i, puis je renvoi une fonction, qui a cette valeur "en mémoire"


          Bon... en fait je crois que c'est pas très compréhensible ce que je dis =/
          Essaies ça : http://www.siteduzero.com/tutoriel-3-1 [...] vascript.html je pense que tu comprendras peut etre un peu mieux qu'avec moi :)
          • Partager sur Facebook
          • Partager sur Twitter
            26 décembre 2009 à 14:07:21

            Pas de problème j'ai tout compris !

            Je connaissais déjà le principe de niveau mais je ne comprenais pas en quoi elle s'appliquait dans ce cas ^^

            En tout cas merci à toi !

            Sujet Résolu
            • Partager sur Facebook
            • Partager sur Twitter

            [jQuery] Utiliser une variable global dans un 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