Frage

Ich mag ein Click-Ereignis auf ein Knopfelement befestigen und sie dann später entfernen, aber ich kann nicht unclick get () oder unbind () Veranstaltung (en) wie erwartet zu funktionieren. Im folgenden Code ist die Schaltfläche ‚tan‘ Farbe und das Click-Ereignis funktioniert.

window.onload = init; 
function init() {
    $("#startButton").css('background-color', 'beige').click(process_click);
    $("#startButton").css('background-color', 'tan').unclick();
}

Wie kann ich entfernen Ereignisse aus meinen Elementen?

War es hilfreich?

Lösung

Es gibt nicht so etwas wie unclick(). Wo hast du das her?

Sie können entfernen einzelne Event-Handler von einem Elemente durch den Aufruf unbind:

$("#startButton").unbind("click", process_click);

Wenn Sie alle Handler entfernen möchten, oder Sie haben eine anonyme Funktion als Handler, können Sie das zweite Argument weglassen unbind():

$("#startButton").unbind("click");

Andere Tipps

Oder man könnte eine Situation, wo Sie die Klick-Funktion entbinden wollen einfach nur, nachdem Sie es verwenden, wie ich musste:

$('#selector').click(function(event){
    alert(1);
    $(this).unbind(event);
});

unbind ist dein Freund.

$("#startButton").unbind('click')

Sind Sie sicher, dass Sie es lösen wollen? Was passiert, wenn später Sie wollen es wieder binden und wieder und wieder? Ich mag es nicht dynamischen Event-Handling bind / entbinden, da sie aus der Hand zu bekommen neigen, wenn sie von verschiedenen Stellen des Codes genannt.

Sie möchten können alternative Optionen prüfen:

  • ändern Sie die Schaltfläche "disabled" Eigenschaft
  • implementieren Ihre Logik in "process_click" Funktion

Just my 2 cents, nicht eine universelle Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top