Ich benutze JQuery innerhalb EcmaScript 6 Klasse, und ich habe eine Ereignisfunktion, die auf Instantiierung der Klasse ausgelöst und das Ereignis enthält verschiedene JQuery-Ereignisse, die mit der Klasse interagieren müssen, also tue ich. bind(), um das zu erreichen, funktioniert alles ok bis auf ein Ereignis, das aus irgendeinem Grund das jquery Element "this" mit "that" überschreibt, das ich mit .bind (that) Methode übergeben habe, hier ist mein Code (alles funktioniert außer für diese Veranstaltung):Bindung an jquery Funktion Problem
var that = this;
$(document).on('click', '[select-file]' , function(event) {
event.preventDefault();
console.log(this);
}.bind(that));
so gibt das Konsolenprotokoll mir die übergeordnete Klasse statt jquery Element wo, wie dies funktioniert wie erwartet:
$(document).on('click', '[open-file-dialoge]', function(event) {
event.preventDefault();
$('[file-dialoge]').modal('show');
if ($(this).attr('mitiupload') == 'false') {
// check if multiple upload is disabled
that.multiUpload = false;
$(this).removeAttr('multiple');
}
that.insertFiles();
}.bind(that));
Pleas helfen, kann ich nicht verstehen, was hier vor sich geht man wie auch erwartet nicht funktioniert, obwohl es keinen großen Unterschied zwischen ihnen ist, (
Verwenden Sie einfach verwenden 'dass' für den übergeordneten Bereich und lassen jQuery seinen eigenen' this' zuzuweisen. – alex
Sehen Sie nicht, wie es möglich ist, dass der zweite für '$ (this)' arbeitet. – charlietfl
Warum verwenden Sie überhaupt 'bind', wenn Sie nicht wollen, dass' this' auf die Klasseninstanz verweist, sondern auf das Element? ! – Bergi