confirmer seulement 1 fonction du temps avec jquery
Question
J'ai cette fonction qui lecture aléatoire d'une liste d'images, quand je presse sur un bouton #shuffle je veux déclencher un message, si est confirmé la deuxième fois que je ne voudrai pas demander à nouveau!
comment coder cela?
$('#shuffle').click(function(){
if(confirm('This will shuffle all your bla bla bla')){
$("#upimagesQueue li").shuffle();
}
});
La solution
Vous pouvez utiliser une variable, comme ceci:
var confirmed = false;
$('#shuffle').click(function(){
if(confirmed || confirm('This will shuffle all your bla bla bla')){
$("#upimagesQueue li").shuffle();
confirmed = true;
}
});
Cela commence par la confirmation ne pas être reconnu, mais la première fois qu'il est, il est défini sur true. Cela signifie que la première partie du condition1 OR condition2
dans votre if()
serait vrai, de sorte que la confirmation n'affichera à nouveau.
Vous pouvez utiliser .data()
pour stocker la variable pour ceci:
$('#shuffle').click(function(){
if($(this).data('confirmed') || confirm('This will shuffle all your bla bla bla')){
$(this).data('confirmed', true);
$("#upimagesQueue li").shuffle();
}
});
Autres conseils
Ceci est une meilleure façon plus lisible
$('#shuffle').bind('click', function(event){
if(confirm('are you sure?')){
$(this).unbind(event);
$('#shuffle').bind('click', function(){
$("#upimagesQueue li").shuffle();
});
$("#upimagesQueue li").shuffle();
}
});
Voir: http://api.jquery.com/one/
pourrait aussi être écrit:
$('#shuffle').bind('click', function(event){
if(confirm('are you sure?')){
$(this).unbind(event).click(function(){
$("#upimagesQueue li").shuffle();
})
$("#upimagesQueue li").shuffle();
}
});