инструменты:сделать обратные вызовы ajax для работы с элементом, по которому щелкнули

StackOverflow https://stackoverflow.com//questions/23035731

Вопрос

Предположим, у меня есть несколько ссылок красного цвета, и я хочу добавить к ним событие щелчка, чтобы при его срабатывании он отправлял атрибут ссылки HREF на сервер (в виде запроса AJAX), и в случае успеха цвет ссылки будет изменен. к зеленому.Я хочу что-то вроде:

$$('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]);
    }
);

Извините, если глупый вопрос.пожалуйста, измените заголовок на какой-нибудь разумный.

Это было полезно?

Решение

Проблема здесь в том, что this внутри обработчика событий это не то же самое, что this внутри класса запроса.Итак, что обычно делается, это изменить ссылку на this в новой переменной, например var self = this.

После этого вы можете использовать self.setStyle('color', 'green');

Кстати, совет: лучше всего было бы иметь класс для зеленого цвета и переключать его по времени щелчка.

Итак, вот предложение кода:

$$('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);
});

и используя в CSS что-то вроде:

.green {
    color: green;
}

Пример

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top