инструменты:сделать обратные вызовы ajax для работы с элементом, по которому щелкнули
-
21-12-2019 - |
Вопрос
Предположим, у меня есть несколько ссылок красного цвета, и я хочу добавить к ним событие щелчка, чтобы при его срабатывании он отправлял атрибут ссылки 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;
}