IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Conseil pour plugin jquery avec POO


Sujet :

jQuery

  1. #1
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Points : 194
    Points
    194
    Par défaut Conseil pour plugin jquery avec POO
    Salut à tous,

    J'aimerai bien quelques conseils pour bien developpez un plugin jquery en POO, Voici la structure de base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    (function($){
     
     var methods = {
        init : function( options ) {
     
           // Create some defaults, extending them with any options that were provided
           var settings = $.extend( {
             authentification:false
           }, options);
     
           //this.show();
     
           return this.each(function(){
     
              $(this).on('dblclick',function() {
    	       	var item = $(this);
    	       	item.after('<a href="#" class="ec-input-validation"/></a>');
    	  });
     
    	   $('.ec-input-validation').live('click',function() {
    		    this.update();
    		    return false;     
               });
     
              });
     
     
        },
        show : function( ) {},
        hide : function( ) {},
        update : function( ) {
            $.ajax({
            });
        }
    };
     
    $.fn.editcontent = function(method){
     
        if ( methods[method] ) {
          return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
        } else if ( typeof method === 'object' || ! method ) {
          return methods.init.apply( this, arguments );
        } else {
          $.error( 'Method ' + method + ' does not exist !' );
        }
     
    };
     
    })(jQuery);
    A priori j'aimerai pouvoir appeler la fonction "show" par exemple, dans le init, pour faire de la POO comme en php quoi.

    Et evidemment, le $('.ec-input-validation').live se lance à chaque tour de boucle, alors qu'il faudrait qu'il le fasse une seul fois... pour mettre à jour la bdd.

    Une idée, un conseil ?

    Merci
    F.

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Le live en jquery
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .live( events, data, handler(eventObject) )
    Le handler te permet de function un callBack sur une function donc tu peux a partir de la désactiver ce que tu souhaite (supprimer un object, supprimer un event...).

    Pour appeler de ta function this.show(); la ou tu le souhaitait j'aurais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    (function($){
     
    	 var methods = {
    	    init : function( options ) {
     
    	       // Create some defaults, extending them with any options that were provided
    	       var settings = $.extend( {
    	         authentification:false
    	       }, options);
     
    	       this.show();
     
    	       return $(this).each(function(){
     
    	 			alert("dans return each function");
     
    	 			$("#double").live('dblclick',function() {
    				    var item = $(this);
    				    item.after('<a href="#" class="ec-input-validation"/></a>');
    				  });
     
    				  $('.ec-input-validation').live('click',function() {
    					  this.update();
    					  return false;     
    			       });
    			});
     
    	    },
    	    show : function( ) {alert("ok show");},
    	    hide : function( ) {},
    	    update : function( ) {
    	        $.ajax({
    	        });
    	    }
    	};
     
    	$.fn.editcontent = function(method){
     
    	    if ( methods[method] ) {
    	      return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
    	    } else if ( typeof method === 'object' || ! method ) {
    	      return methods.init.apply( this, arguments );
    	    } else {
    	      $.error( 'Method ' + method + ' does not exist !' );
    	    }
     
    	};
    	alert(methods.init());
    	})(jQuery);

  3. #3
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Points : 194
    Points
    194
    Par défaut
    Salut,

    Merci pour ton message. Par contre, si tu n'appelles pas la fonction init comme çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	};
    	methods.init();
    	})(jQuery);
    l'appel à this.show() ne se fait pas. Et tu perds l'interet de plugin. Ensuite, par contre, le this.update ne fonctionne pas non plus, probleme de contexte.
    J'ai essayé de sauvegarder this, pour l'appeller ailleurs, là aussi çà ne fonctionne pas.

    Merci
    F.

  4. #4
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Points : 3 747
    Points
    3 747
    Par défaut
    Hello,

    Je te conseille plutôt d'utiliser jQuery Boilerplate qui permet d'avoir une approche OO.
    Je ne réponds pas aux questions techniques par MP.

Discussions similaires

  1. Conseil pour choisir DBI avec flat file
    Par florent dans le forum SGBD
    Réponses: 2
    Dernier message: 10/08/2009, 23h26
  2. Réponses: 5
    Dernier message: 28/12/2008, 01h20
  3. conseil pour langage compatible avec les PDA
    Par loic20h28 dans le forum Windows
    Réponses: 10
    Dernier message: 29/11/2007, 19h18
  4. Réponses: 7
    Dernier message: 06/12/2005, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo