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.

Était-ce utile?

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;
}

Exemple

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top