Zum Umschalten klicken Sie auf Handler in Javascript

Ich habe eine HTML-Schaltfläche, auf die lege ich ein Ereignis, mit jQuery ist bind():

$('#mybutton').bind('click', myFirstHandlerFunction);

In myFirstHandlerFunction möchte ich diesen handler zu ersetzen, selbst mit einer neuen hf mySecondHandlerFunction wie diese:

function myFirstHandlerFunction(e) {
    $(this).unbind('click', myFirstHandlerFunction).bind('click', mySecondHandlerFunction);
}

In der zweiten click-handler, mySecondHandlerFunction möchte ich wählen Sie mit der Taste wieder in den ursprünglichen Zustand: Bindung die mySecondHandlerFunction handler und befestigen Sie den original-handlermyFirstHandlerFunction:

function mySecondHandlerFunction(e) {
    $(this).unbind('click', mySecondHandlerFunction).bind('click', myFirstHandlerFunction);
}

Dies funktioniert gut, außer ein kleines detail: da das click-Ereignis nicht noch vermehrt durch die einzelnen button-Klick-Handler des click-Ereignisses übergeben wird, auf die Schaltfläche weiter klicken Sie auf handler,, die passiert werden die handler, war nur gebunden in der vorherigen Prozedur. Das Ergebnis ist mySecondHandlerFunction wird sofort ausgeführt, nachdem myFirstHandlerFunction ausgeführt wird.

Dieses problem kann leicht gelöst werden, durch aufrufen e.stopPropagation() in jeder Hundeführer, aber das hat den negativen Nebeneffekt, stornieren Sie alle anderen click-Handler, eventuell angebracht wurden, unabhängig voneinander.

Gibt es einen Weg, um sicher und konsequent Umschalten zwischen zwei click-Handler, ohne zu stoppen die Ausbreitung der click-Ereignis?

Warum verwenden nicht Sie eine Flagge, um zu überprüfen, welcher handler aufzurufen und bringen Sie immer eine master-handler.

InformationsquelleAutor Nathan Friend | 2013-01-03

Schreibe einen Kommentar