Variable privée dans un plugin jQuery
Résolu
monkey_monk
Messages postés
611
Date d'inscription
Statut
Membre
Dernière intervention
-
monkey_monk Messages postés 611 Date d'inscription Statut Membre Dernière intervention -
monkey_monk Messages postés 611 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je planche depuis quelques heures sur une question de variable privée à l'intérieur d'un plugin jQuery.
Avant d'aller plus loin, voici mon code test :
et la structure HTML :
Le problème est qu'au moment du second alert, je ne reçoit que "instance 2".
...alors que je veux désespérément avoir "instance 1" pour le premier et "instance 2" pour le second.
Quelqu'un pourrait éclairer ma lanterne ?
Un grand merci d'avance parce que je sèche vraiment là... ^^
je planche depuis quelques heures sur une question de variable privée à l'intérieur d'un plugin jQuery.
Avant d'aller plus loin, voici mon code test :
/* PLUGINNAME */
(function($){
$.fn.test = function(options){
var opts = $.extend({},$.fn.test.defaults,options);
return this.each(function(){
init($(this));
opts.callback();
});
function init(obj){
var ref = obj;
var o = $.meta ? $.extend({}, opts, obj.data()) : opts;
o.param = obj.text();
console.log(o.param+' : '+ref.text());
// me renvoi bien "instance 1" puis "instance 2"
obj.append('<a class="testeur" href="#" title="click test">click test</a>');
obj.children('.testeur').each(function(){
$(this).click(function(e){
e.preventDefault();
testeur(ref,o);
});
});
}
function testeur(obj,o){
alert(obj.text());
alert(o.param); // renvoi systématiquement "instance 2" (???)
}
};
$.fn.test.defaults = {
param : '',
callback : function(){}
};
})(jQuery);
/* /PLUGINNAME */
$(function(){
$('.test').test();
});
et la structure HTML :
<div id="instance1" class="test"> instance 1 </div> <div id="instance2" class="test"> instance 2 </div>
Le problème est qu'au moment du second alert, je ne reçoit que "instance 2".
...alors que je veux désespérément avoir "instance 1" pour le premier et "instance 2" pour le second.
Quelqu'un pourrait éclairer ma lanterne ?
Un grand merci d'avance parce que je sèche vraiment là... ^^
A voir également:
- Variable privée dans un plugin jQuery
- Navigation privée - Guide
- Numero privee - Guide
- Hp dropbox plugin - Forum Logiciels
- Variable d'environnement temp ✓ - Forum Microsoft Office
- Supprimer navigation privée chrome android - Forum Google Chrome
2 réponses
Bon et bien après 10 minutes à lire la doc sur .data() ...je crois bien que j'ai ma solution ! :)
Comme quoi, il faut pas chercher midi à 14h ! ^^
Donc le code final et fonctionnel :
Merci quand même ! :D
Comme quoi, il faut pas chercher midi à 14h ! ^^
Donc le code final et fonctionnel :
/* PLUGINNAME */
(function($){
$.fn.pluginName = function(options){
var opts = $.extend({},$.fn.pluginName.defaults,options);
return this.each(function(){
$(this).data(opts);
init($(this));
opts.callback();
});
function init(obj){
obj.data(opts).param = obj.text();
obj.append('<span class="testeur">click test</span>');
obj.children('.testeur').click(function(e){
e.preventDefault();
testeur(obj);
});
}
function testeur(obj,o){
alert(obj.text());
alert(obj.data(opts).param);
}
};
$.fn.pluginName.defaults = {
param : '',
param2 : '',
callback : function(){}
};
})(jQuery);
/* /PLUGINNAME */
$(function(){
$('.test').pluginName();
});
Merci quand même ! :D