Attacher une variable à un élément HTML
Bonjour à tous,
je continue sur ma lancée des plugins JQuery (que je réalise pour mes besoins) et je souhaitais utiliser les même principes que le flexigrid pour accéder à des méthodes mais je me heurte à un problème.
J'ai une fonction JQuery "filters" qui créer un div et fait ce qu'il à faire dedans.
Et j'ai 2 autres fonctions qui permettent en théorie de mettre à jour les options de mon "filters" et de le recharger (recharger l'IHM de ce div).
Sauf que lorsque j'essaye d'accéder à la variable params de mon élément HTML, elle n'existe pas, pourtant en débug, lorsque je fais "this.params = params;" dans la partie "filters", je vois bien que la variable params est attachée à mon élément HTML.
Ma question est donc : wtf ? Pourquoi je n'arrive pas à récupérer cette variable en faisant "this.params" dans les fonctions "filtersOptions" et/ou "filtersReload" ?
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 37 38 39 40
| (function($) {
/*JQUERY PLUGGIN*/
$.fn.filters = function(params) {
/*Parameters*/
params = $.extend({
title: '',
category: '',
filters: [],
open: true
},params);
/*No action so we init the container*/
if((typeof params)!="string"){
/*Change the container class*/
$(this).addClass("activeFilters");
/*Create the title*/
$(this).append(CreateDivTitle(params));
/*Create the content*/
$(this).append(CreateDivContent(params));
}else{
//Action asked
}
this.params = params;
return this;
};
$.fn.filtersOptions = function (params) { //function to update general options
return this.each(function () {
$.extend(this.params, params);
});
};
$.fn.filtersReload = function (params) { //function to update content
return this.each(function () {
$.extend(this.params, params);
$("#activeFiltersContent").remove();
/*Re create the content*/
$(this).append(CreateDivContent(this.params));
});
};
})(jQuery); |
Code:
1 2 3
| $('#activeFilters').filters({title: filtersTitle[0], category: filterAll[0], open: true});
var arrayTest = ['Severité 1','Site : Tours'];
$('#activeFilters').filtersOptions({filters: arrayTest}); |
NB : le code est toujours en développement. Les fonctions Create[...] ne font qu'insérer du HTML.
Merci à tous et joyeux noël en léger retard puisque je n'ai pas eu l'occasion de vous le souhaiter :mouarf: