Вопрос

У меня есть эта функция, которая будет перемещать список изображений, когда я нажимаю на кнопку #shuffle, я хочу вызвать сообщение, если подтверждено во второй раз, я не хочу задать снова!

Как это код?

$('#shuffle').click(function(){
  if(confirm('This will shuffle all your bla bla bla')){
    $("#upimagesQueue li").shuffle();       
  }
});
Это было полезно?

Решение

Вы можете использовать переменную, как это:

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

Это начинается с подтверждения, не подтвержденного, но в первый раз оно есть, это установлено значение true. Это означает первую часть condition1 OR condition2 в твоем if() будет правдой, поэтому подтверждение не появится снова.

В качестве альтернативы вы можете использовать .data() Чтобы сохранить переменную для этого:

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

Другие советы

Это еще более читаемый путь

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

Видеть: http://api.jquery.com/one/

Также может быть написан как:

$('#shuffle').bind('click', function(event){
    if(confirm('are you sure?')){
        $(this).unbind(event).click(function(){
            $("#upimagesQueue li").shuffle();
        })
        $("#upimagesQueue li").shuffle();
    }
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top