Ich sehe immer wieder Klick in der Konsole, so dass der Klick nicht gelöst wird. Aber wenn ich den Aufruf bind () entferne, ist der Klick nicht verbunden. Weiß jemand warum? Ich brauche einen Weg, "das" in meiner Testfunktion zu ändern, deshalb verwende ich bind ()
Das Problem ist, dass this._click.bind()
bei jedem Aufruf eine neue Funktion erstellt. Um einen bestimmten Event-Handler zu lösen, müssen Sie die ursprüngliche Funktion übergeben, die zum Erstellen des Event-Handlers verwendet wurde und die hier nicht stattfindet, sodass der Handler nicht entfernt wird.
Wenn es in Ihrer App nur ein paar bubble
s gibt, können Sie Douglas Crockfords Route gehen und einfach this
nicht verwenden. Das wird eine Menge Unklarheit darüber beseitigen, auf was sich this
bezieht, und sicherstellen, dass jedes bubble
einen Verweis auf seine eigene click
-Funktion behält, die verwendet werden kann, um das Ereignis nach Bedarf zu entfernen:
Sehen Sie, wie Sie damit nicht mehr auf Methoden wie .bind()
und vorstreichende Methoden zurückgreifen müssen.
Verwenden Sie den Proxy von jQuery, um eine eindeutige Referenz Ihrer Funktion zu erhalten.
Auf diese Weise wird beim Aufruf von $ .proxy (test, dies) überprüft, ob diese Funktion bereits referenziert wurde. Wenn ja, wird Ihnen der Proxy diesen Verweis zurückgeben, andernfalls erstellt er einen und gibt ihn Ihnen zurück. So können Sie immer Ihre ursprüngliche Funktion erhalten, anstatt sie immer wieder neu zu erstellen (wie mit bind).
Wenn Sie also off () aufrufen und die Referenz Ihrer Testfunktion übergeben, wird off () Ihre Funktion aus dem Click-Ereignis entfernen.
Und auch, Ihre Testfunktion sollte vor der Verwendung deklariert werden.
%Vor%Bitte lesen Sie Ссылка
bind erzeugt eine neue Funktion, daher ist $(document).on('click', test.bind(this));
wie $(document).on('click', function(){});
und jedesmal wenn Sie es ausführen, rufen Sie eine neue anonyme Funktion auf, so dass Sie keinen Verweis auf die Bindung haben.
Wenn Sie etwas tun würden wie:
%Vor%Es sollte gut funktionieren
z. B. Ссылка
Auch - bind wird nicht empfohlen, es ist langsam und wird in einigen Browsern nicht unterstützt.
Tags und Links javascript jquery javascript-events jquery-events bind