Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/07/2011, 13h39   #1
Membre éclairé
 
Avatar de beejeridou
 
Homme
Webmaster
Inscription : février 2007
Messages : 261
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : février 2007
Messages : 261
Points : 315
Points : 315
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 :
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!
__________________
Et pourtant... Elle tourne.
http://www.artisan-developpeur.fr
beejeridou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 14h21   #2
Membre éclairé
 
Avatar de beejeridou
 
Homme
Webmaster
Inscription : février 2007
Messages : 261
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : février 2007
Messages : 261
Points : 315
Points : 315
J'ai trouvé la solution:

Dans mon plugin, j'avais mis
Code :
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.
__________________
Et pourtant... Elle tourne.
http://www.artisan-developpeur.fr
beejeridou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 23h08   #3
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

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

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
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 :
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 :
1
2
3
$(function(){
   $(".conteneur").dvjhExemple();
});
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h11.


 
 
 
 
Partenaires

Hébergement Web