Bonjour
Pecose a écrit :
Le problème de ce code, c'est qu'a partir du deuxième bouton ca ne marche plus. Je pence que l'action2 n'est pas reconnu, n'existant pas dans le code d'origine...
J'ai dans l'idée que ce doit effectivement être le problème.
Une solution pourrait être du type suivant, utilisant la fonction "live":
Code : Tout sélectionner
$(document).ready(function(){
$("#action1").live('click', function(){
$(this).attr('id', 'action2');
alert('action1');
});
$("#action2").live('click', function(){
$(this).attr('id', 'action3');
alert('action2');
});
$("#action3").live('click', function(){
$(this).attr('id', 'action1');
alert('action3');
});
})
J'ai aussi modifié le
dans la mesure où il me semblait peu orthodoxe qu'un objet avec une "class" attribue un "id". Il se pourrait que plusieurs objets aient la même "class" nommée ".bouton" (par nature des "classes"). Ce qui mènerait à plusieurs objets ayant le même "id" = hérétique.
http://jsfiddle.net/chX4v/
[edit]La date de péremption de ma réponse est dépassée. Il faut que je me mette à jour
As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live().
http://api.jquery.com/live/
Yapluka adapter[/edit]
[edit2]
Ceci devrait être mieux...
http://jsfiddle.net/GYrJc/
Code : Tout sélectionner
$(document).ready(function(){
$('body').on('click','#action1', function(){
$('#action1').attr('id', 'action2');
alert('action1');
});
$('body').on('click', '#action2', function(){
$('#action2').attr('id', 'action3');
alert('action2');
});
$('body').on('click', '#action3', function(){
$('#action3').attr('id', 'action1');
alert('action3');
});
})
[/edit2]
Votre Navigateur : Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0