Ich habe folgende Jquery Ajax-Aufruf:jquery benutzerdefiniertes Ereignis in Ajax-Erfolg Callback funktioniert nicht ohne SetTimeout
$.ajax({
type: "POST",
url: url,
data: data,
success: function (data, textStatus, jqXHR) {
// Without setTimeout, the triggerHandler doesn't work
setTimeout(function (e) {
$(this).triggerHandler($.Event("CustomEvent"));
});
}
});
Und in einem anderen Ort:
$(this).on('CustomEvent', function (evt) {
alert("CustomEvent");
});
Der obige Code zeigt eine Warnung. Wenn ich jedoch den triggerHandler Aufruf in setTimeout nicht einschließen, wird das .on nie aufgerufen und eine Warnung wird nicht angezeigt. Irgendwelche Ideen warum das SetTimeout dafür notwendig zu sein scheint?
Den vollständigen js-Code zu veröffentlichen wird hilfreich sein ... oder ein minimales funktionierendes Beispiel –
Ich nehme an, es liegt daran, dass der Umfang von 'this' nicht ist, was auch immer Sie innerhalb des' success'-Handlers von '$ erwarten .ajax' –
versuchen Sie es in die "vollständige" Funktion Ihres Ajax. –