Je crée un plugin jQuery pour faire de la pagination et j'ai rencontré le problème suivant. Lorsque je clique sur un lien de page créé par le plugin ci-dessous, il nous donnera toujours la valeur du dernier index passé dans la valeur i au dernier itérateur du code ci-dessous. S'il y a 4 pages, j'obtiendrai toujours 4 si j'appuie sur le lien 1, 2, 3 ou 4. Il semble que la référence au délégué onclick garde aussi une référence à la valeur de i au lieu de simplement la valeur.Référence JavaScript par valeur/par problème de référence
Des idées? C'est le options.onclick (i) qui agit étrange.
$.fn.pager = function(options) {
var defaults = {
resultSet: undefined,
onclick: function(page) { alert(page); return false; },
};
return this.each(function() {
var rnd = Math.floor(Math.random()*9999)
var result = '';
for(var i = 1; i <= options.resultSet.PageCount; i++)
{
if(i == options.resultSet.PageCount)
result += '<a href="#" id="' + rnd + '_pagerPage_' + i + '">' + i + '</a>';
else
result += '<a href="#" id="' + rnd + '_pagerPage_' + i + '">' + i + '</a>' + options.separator;
}
$(this).html(result);
for(var i = 1; i <= options.resultSet.PageCount; i++)
{
$('#' + rnd + '_pagerPage_' + i).click(function() { options.onclick(i) });
}
});
}
J'ai réduit le code ci-dessus au cas de problème. Donc, certains contrôles manque quelque;)
Ok, C'est en effet le problème, mais la question est, comment pouvons-nous résoudre cela? –
J'ai mis à jour ma réponse. –
J'avais espéré éviter cela, mais merci pour votre réponse rapide. Cela fonctionne comme un charme et résout le problème de référence. –