J'ai créé un bouton, qui met à jour les valeurs de lui-même, et quand on clique dessus (encore une fois), jquery ne sélectionne pas les valeurs mises à jour ..jquery ne reçoit pas de données mis à jour dynamiquement de bouton
avant la première clic:
<a href="news" data-start="2" data-limit="2" data-page="2" class="btn load-more">Load more</a>
Le jQuery:
$(document).on('click','.load-more',function(e){
e.preventDefault();
var start = $(this).data('start'),
limit = $(this).data('limit'),
page = $(this).data('page'),
type = $(this).attr('href');
alert(start+' '+limit+' '+page);
$.ajax({
url:'/index.php?route=news/news/getnext&start=4&limit=4&page=2',
method:'GET',
data:{start:start,limit:limit,page:page},
dataType:'json',
success:function(data){
.... doing stuff ....
if(data.pagination === true){
$('.load-more').attr('data-start',data.start).attr('data-limit',data.limit).attr('data-page',data.next);
} else {
$('.load-more').fadeOut(250,function(){
$(this).remove();
});
}
}
})(data);
});
Cette alerte "2 2 2" comme prévu.
Le bouton mis à jour (après le premier clic):
<a href="news" data-start="4" data-limit="2" data-page="3" class="btn load-more">Load more</a>
Ensuite, je clique sur le bouton à nouveau, et il avertit encore « 2 2 2 », au lieu de « 4 2 3 », que le bouton a été mis à jour à
Des idées à ce sujet? Je n'arrive pas à le faire fonctionner, j'ai essayé la fonction de base de clic et aussi déléguer mais cela ne fonctionne pas comme prévu.
Comme expliqué dans [la '.data()' documentation] (http://api.jquery.com/data/), « Les attributs sont Data- tiré dans la première fois que la propriété de données est accédée et n'est plus accédé ou muté (toutes les valeurs de données sont ensuite stockées en interne dans jQuery). ". Donc, si vous voulez mettre à jour ces valeurs, utilisez '.data()' pour récupérer * et * définir les valeurs, ou utiliser '.attr()' pour récupérer * et * définir les valeurs. Ne mélangez pas '.data()' et '.attr()'. – nnnnnn