Pregunta

Tengo esta función que barajará una lista de imágenes, cuando presiono en un botón #shuffle, quiero activar un mensaje, si se confirma la segunda vez que no querré volver a preguntar.

¿Cómo codificar esto?

$('#shuffle').click(function(){
  if(confirm('This will shuffle all your bla bla bla')){
    $("#upimagesQueue li").shuffle();       
  }
});
¿Fue útil?

Solución

Puede usar una variable, como esta:

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

Esto comienza con la confirmación de no ser reconocida, pero la primera vez que es, está configurada en verdad. Esto significa la primera parte del condition1 OR condition2 en tus if() Sería cierto, por lo que la confirmación no aparecería nuevamente.

Alternativamente, puede usar .data() Para almacenar la variable para esto:

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

Otros consejos

Esta es una forma mejor más legible

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

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

También podría escribirse como:

$('#shuffle').bind('click', function(event){
    if(confirm('are you sure?')){
        $(this).unbind(event).click(function(){
            $("#upimagesQueue li").shuffle();
        })
        $("#upimagesQueue li").shuffle();
    }
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top