confirmar solo 1 función de tiempo con jQuery
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();
}
});
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