Domanda

Ho questa funzione che mescolerà un elenco di immagini, quando premo un pulsante #Shuffle voglio attivare un messaggio, se è confermato la seconda volta che non vorrò chiedere di nuovo!

Come codificare questo?

$('#shuffle').click(function(){
  if(confirm('This will shuffle all your bla bla bla')){
    $("#upimagesQueue li").shuffle();       
  }
});
È stato utile?

Soluzione

Puoi usare una variabile, come questa:

var confirmed = false;
$('#shuffle').click(function(){
  if(confirmed || confirm('This will shuffle all your bla bla bla')){
    $("#upimagesQueue li").shuffle();  
    confirmed = true;     
  }
});

Questo inizia con il conferma che non viene riconosciuto, ma la prima volta che lo è, è impostato su True. Questo significa la prima parte del condition1 OR condition2 nel tuo if() Sarebbe vero, quindi il conferma non si aprirebbe più.

In alternativa, puoi usare .data() Per archiviare la variabile per questo:

$('#shuffle').click(function(){
  if($(this).data('confirmed') || confirm('This will shuffle all your bla bla bla')){
    $(this).data('confirmed', true);   
    $("#upimagesQueue li").shuffle();   
  }
});

Altri suggerimenti

Questo è un modo più leggibile

$('#shuffle').bind('click', function(event){
    if(confirm('are you sure?')){
        $(this).unbind(event);
        $('#shuffle').bind('click', function(){
            $("#upimagesQueue li").shuffle();
        });
        $("#upimagesQueue li").shuffle();
    }
});

Vedere: http://api.jquery.com/one/

Potrebbe anche essere scritto come:

$('#shuffle').bind('click', function(event){
    if(confirm('are you sure?')){
        $(this).unbind(event).click(function(){
            $("#upimagesQueue li").shuffle();
        })
        $("#upimagesQueue li").shuffle();
    }
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top