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();       
  }
});
Était-ce utile?

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();
    }
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top