mootools:faire des rappels ajax pour travailler avec l'élément cliqué
-
21-12-2019 - |
Question
Supposons que j'ai un certain nombre de rouge couleur des liens, et que vous souhaitez ajouter cliquez sur un événement pour eux, tels que, lorsqu'il se déclenche, il envoie de l'attribut HREF du lien au serveur (comme une requête AJAX), et en cas de succès, le lien de la couleur seront changés au vert.Je veux quelque chose comme:
$$('a.red').addEvent(
"click",
function () {
new Request.JSON({
url: 'script.php',
onSuccess: function(){
[the link wich is clicked].setStyle('color', 'green');
return false;
}
}).get("url="+[url of the link]);
}
);
Désolé si la question idiote.merci de modifier le titre de certaines sensible.
La solution
Le problème ici est que this
dans le gestionnaire d'événement n'est pas le même que this
à l'intérieur de la Classe de Requête.Donc, Ce qu'il fait est de changer la référence this
dans une nouvelle variable, par exemple var self = this
.
Après cela, vous pouvez utiliser self.setStyle('color', 'green');
Par ailleurs, une suggestion, le mieux serait d'avoir aussi une classe pour la couleur verte et les passer par le moment du clic.
Voici donc un code suggestion serait:
$$('a.red').addEvent("click", function (event) {
var self = this;
event.stop();
new Request.JSON({
url: 'script.php',
onSuccess: function () {
self.removeClass('red').addClass('green');
return false; // I added event.stop(), presume that is what you meant. Do this line can be removed
}
}).get("url=" + self.href);
});
et de l'aide dans le CSS quelque chose comme:
.green {
color: green;
}