Problème
A l'intérieur du callback, this
fait référence à la jqXHR
de l'appel Ajax, et non l'élément auquel le gestionnaire d'événements était lié. En savoir plus sur la façon dont this
fonctionne en JavaScript .
Solutions
Si vous disposez de l'ES2015+, l'utilisation d'une version de l'ES2015+ est possible. fonction de flèche serait probablement l'option la plus simple :
$.ajax({
//...
success: (json) => {
// `this` refers to whatever `this` refers to outside the function
}
});
Vous pouvez régler le context
option :
Cet objet deviendra le contexte de tous les callbacks liés à Ajax. Par défaut, le contexte est un objet qui représente les paramètres Ajax utilisés dans l'appel ( $.ajaxSettings
fusionné avec les paramètres passés à $.ajax
). (...)
$.ajax({
//...
context: this,
success: function(json) {
// `this` refers to the value of `context`
}
});
ou utiliser $.proxy
:
$.ajax({
//...
success: $.proxy(function(json) {
// `this` refers to the second argument of `$.proxy`
}, this)
});
ou conserver une référence à la valeur de this
en dehors du rappel :
var element = this;
$.ajax({
//...
success: function(json) {
// `this` refers to the jQXHR object
// use `element` to refer to the DOM element
// or `$(element)` to refer to the jQuery object
}
});
Related