Frage

Ich habe diese Funktion, die eine Liste von Bildern mischt. Wenn ich auf eine #Shuffle -Taste drücke, möchte ich eine Nachricht auslösen. Wenn ich beim zweiten Mal nicht noch einmal fragen möchte!

Wie codiere ich das?

$('#shuffle').click(function(){
  if(confirm('This will shuffle all your bla bla bla')){
    $("#upimagesQueue li").shuffle();       
  }
});
War es hilfreich?

Lösung

Sie können eine Variable wie diese verwenden:

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

Dies beginnt damit, dass die Bestätigung nicht anerkannt wird, aber das erste Mal ist es auf wahr. Dies bedeutet der erste Teil der condition1 OR condition2 in deiner if() Wäre wahr, also würde die Bestätigung nicht wieder auftauchen.

Alternativ können Sie verwenden .data() Um die Variable dafür zu speichern:

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

Andere Tipps

Dies ist ein besser lesbarer Weg

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

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

Könnte auch geschrieben werden als:

$('#shuffle').bind('click', function(event){
    if(confirm('are you sure?')){
        $(this).unbind(event).click(function(){
            $("#upimagesQueue li").shuffle();
        })
        $("#upimagesQueue li").shuffle();
    }
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top