9 Stimmen

Ereignisbehandlung jQuery unclick() und unbind() Ereignisse?

Ich möchte ein Klick-Ereignis an ein Schaltflächenelement anhängen und es dann später entfernen, aber ich kann nicht bekommen unclick() o unbind() Ereignis(e) wie erwartet zu funktionieren. Im folgenden Code ist die Schaltfläche tan Farbe und das Klick-Ereignis funktioniert.

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

Wie kann ich Ereignisse aus meinen Elementen entfernen?

19voto

Jim Punkte 70896

Es gibt nicht so etwas wie unclick() . Woher haben Sie das?

Sie können einzelne Ereignisbehandler von einem Element entfernen, indem Sie unbind aufrufen:

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

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

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

6voto

alessioalex Punkte 61

Oder Sie könnten eine Situation haben, in der Sie die Bindung der Klickfunktion aufheben möchten, nachdem Sie sie benutzt haben, wie ich es tun musste:

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

3voto

redsquare Punkte 76970

Unbind ist dein Freund.

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

0voto

Filini Punkte 2081

Sind Sie sicher, dass Sie die Bindung aufheben wollen? Was ist, wenn Sie es später wieder binden wollen, und wieder, und wieder? Ich mag keine dynamische Ereignisbehandlung binden/entbinden, da sie dazu neigen, aus der Hand zu bekommen, wenn sie von verschiedenen Punkten Ihres Codes aufgerufen.

Möglicherweise sollten Sie alternative Optionen in Betracht ziehen:

  • die Eigenschaft der Schaltfläche "deaktiviert" ändern
  • Ihre Logik in der Funktion "process_click" implementieren

Nur meine 2 Cents, keine Universallösung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X