2016-08-05 22 views
0

Ich versuche zu tun, dass nur einer passieren kann, wenn Sie Ja oder Nein klicken. So wie es jetzt ist, wenn Sie beim ersten Mal auf "Nein" und beim zweiten Mal auf "Ja" klicken, wird es zweimal ausgeführt.Wählen Sie nur die erste Schaltfläche

function confirm() { 
    $("#no").one("click", function(){ 
     return false; 
    }); 
} 

$("#yes").one("click", function() { 
    //do something 
}); 

Dank für die Hilfe

+0

Können Sie Ihre vollständigen Code einfügen oder eine jsfiddle für Ihr Szenario erstellen – CNKR

+0

Sie setzen 2 Event-Handler. Entweder muss nur 1 Event-Handler '$ ('. Confirm-button') gesetzt werden, one (" click ", function() {...}', der beide Buttons steuert (prüft auf 'yes'/'no 'Werte und reagiert entsprechend), oder Sie müssen die' andere 'Event-Handler lösen, wenn entweder' ja 'oder' nein 'ausgelöst wird. – Joseph

Antwort

2

Beiden Veranstaltungen an document.ready angebracht sind gehe ich davon aus, das heißt, sie auf unbestimmte Zeit aktiv bleiben, wenn Sie nichts anderes angeben.

Der folgende Ansatz ist ziemlich einfach, setzen Sie einfach eine Variable 'hasClicked' auf false. Und sobald einer von ihnen angeklickt wird, setzen Sie 'hasClicked' auf 'true'. Jeder Button hat eine if-Struktur, die nur den Code IF 'hasClicked' ausführt, ist false.

Versuchen Sie Folgendes:

var hasClicked = false; 
function confirm(){ 

    $("#no").one("click", function(){ 
     if (!hasClicked){ 
      hasClicked = true; 
      return false; 
     } 
    }); 

    $("#yes").one("click", function() { 
     if (!hasClicked) { 
      hasClicked = true; 
      //do something 
     } 
    }); 

} 
+0

ich versuchte .. es funktioniert nicht –

1

Wie Sie kein Ereignis mit one() binded entbinden kann check this answer

So werden Sie so arbeiten um sich haben:

function confirm() { 
    $("#no").bind("click", function(){ 
     $(this).unbind(); // prevent other click events 
     $("#yes").unbind("click"); // prevent yes click event 
     // Do your stuff 
    }); 
} 

$("#yes").bind("click", function() { 
    $(this).unbind(); 
    $("#no").unbind("click"); 
    // Do your stuff 
}); 
+0

ich werde nicht etwas lösen, es ist ong-Code, aber das ist das einzige, was nicht richtig funktioniert –

+0

Eine andere Lösung ist es, einen Boolean zu verwenden, wenn die Aktion noch ausgeführt werden muss oder nicht, aber Sie antwortete, dass @ Tom-Nijs Vorschlag nicht funktioniert:/ –

1

Assign Ihre Tasten eine Klasse namens confirmation. Legen Sie einen Event-Handler basierend auf der Klasse fest. Lesen Sie den Wert der Schaltfläche, um zu entscheiden, was Sie tun möchten.

 $(".confirmation").one("click", function(){ 
     if($(this).val() === 'yes'){ 
     //do something 
     }else{ 
     return false; 
     } 
    } 
+0

ich versuchte .. es funktioniert nicht –