Entfernen des delegierten jQuery-Ereignishandlers für ein bestimmtes Objekt

Ich habe delegierte Ereignishandler mit einem einzigen Selektor an eine Reihe von Elementen auf der Seite angehängt. Da die Ereignisse für einzelne Elemente ausgelöst werden, möchte ich @ deaktivierenur das Element ist event handlerbased on some conditional logic. Das bedeutet, dass ich das Ereignis nicht unbedingt beim ersten Klick deaktivieren möchte. Aber ich kann nicht herausfinden, wie es geht, ohne alle auszuschalten.

HTML:

<button>One</button>
<button>Two</button>
<button>Three</button>

JS:

$(document).on('click', 'button', function(ev) {
    // doesn't work because argument needs to be a string
    $(document).off('click', $(ev.target));

    // doesn't do what I want b/c turns off events on all buttons, not just this one
    $(document).off('click', 'button');

    // doesn't work because event is on document, not button
    $(ev.target).off('click');
});

jQuery'soff Dokumentation sagt, ich muss ein @ angeb string als zweites Argument, kein jQuery-Objekt $(ev.target)), aber wenn ich eine Zeichenfolge gebe, gibt es keinen Wert, der sich nur auf das angeklickte Element bezieht.

Von jQuery aus Dokumentation:

Um bestimmte delegierte Ereignishandler zu entfernen, geben Sie ein Auswahlargument an. Die Auswahlzeichenfolge muss genau mit der Zeichenfolge übereinstimmen, die beim Anhängen des Ereignishandlers an .on () übergeben wurde. Verwenden Sie den Sonderwert "**", um alle delegierten Ereignisse aus einem Element zu entfernen, ohne nicht delegierte Ereignisse zu entfernen.

Wie kann ich einen delegierten Ereignishandler für ein bestimmtes Element deaktivieren?

Hier ist eine JSFiddle des obigen Codes

AKTUALISIERE: Einige Beispiele für Optionen hinzugefügt, die nicht funktionieren, basierend auf den ersten Antworten.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage