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 :

Live() dans un plugin


Sujet :

jQuery

  1. #1
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut Live() dans un plugin
    Bonjour!
    J'ai un plugin que je déclare comme ceci: $('a.ajaxLink').ajaxLink();

    Dedans, j'aimerais y mettre un évènement live(). Le problème est qu'il ne fonctionne pas comme je veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $(this).live('click', function(e)
    {
        alert('ne fonctionne pas, d\ailleurs cette alert ne sert à rien');
    });
     
    $(this).bind('click', function(e)
    {
        alert('fonctionne! mais qu\'une seule fois, donc pas le droit à un rechargement ajax...');
    });
     
    $('a.ajaxLink').live('click', function(e)
    {
        alert('fonctionne autant de fois qu\'il y a d\'occurences!');
    });
    Savez-vous pourquoi le $(this).live() ne fonctionne pas??? c'est trop bizarre!

  2. #2
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    J'ai trouvé la solution:

    Dans mon plugin, j'avais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    return this.each(function() 
    {
    }
    A la place j'ai mis return this; à la fin... Du coup tout fonctionne impec. C'est bizarre quand même, si quelqu'un peut expliquer ce fonctionnement, je suis preneur.

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Ce n'est utile dans un plugin, les éléments du DOM qui appellent le plugin sont accessibles et les nouveaux éléments reçoivent leurs événements dans le plugin.

    Exemple :

    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
    (function($){
    	$.fn.dvjhExemple = function(options){
    		var opts = $.extend(true, {}, $.fn.dvjhExemple.defaults, options);
     
    		return this.each(function(i, item){
    			// L'item existe toujours !
    			// c'est lui qui appelle le plugin !
    			$(item).click(function(){
    				console.log(opts.param2);
    			});
     
    			// un nouvel élément
    			// possède ses événements
    			$("<img/>", {
    				"src": "../images/imageTest.png",
    				"click": function(e){
    					console.log("clic sur l'image à ", new Date(e.timeStamp).toLocaleString());
    					return false;
    				},
    				"mouseenter": function(e){
    					console.log("le pointeur est sur l'image à ", new Date(e.timeStamp).toLocaleString());
    					return false;
    				},
    				"mouseleave": function(e){
    					console.log("le pointeur quitte l'image à ", new Date(e.timeStamp).toLocaleString());
    					return false;
    				}
    			}).appendTo(item);
    		});
    	};
     
        $.fn.dvjhExemple.defaults = {
    		param1: 1,
    		param2: "hello"
    	};
    })(jQuery);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(function(){
       $(".conteneur").dvjhExemple();
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. comment inclure du code C dans un plugin
    Par Stopher dans le forum 4D
    Réponses: 6
    Dernier message: 28/04/2006, 12h39
  2. Plugin dans un Plugin
    Par sunvialley dans le forum Eclipse Platform
    Réponses: 11
    Dernier message: 14/04/2006, 20h57
  3. [Plugin][SWT] FileSelectionDialog dans un plugin
    Par vberetti dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 17/06/2005, 17h37
  4. [plugin] [jar] ajouter un jar dans un plugin
    Par Mobius dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 01/06/2005, 10h44
  5. Catcher une exception lancée dans un plugin
    Par :Bronsky: dans le forum C++
    Réponses: 8
    Dernier message: 18/01/2005, 00h38

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