Bestätigen Sie nur eine Zeitfunktion mit JQuery
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();
}
});
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