假设我有许多红色链接,并希望向它们添加一个click事件,以便在它触发时,它将链接的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]);
}
);
对不起,如果愚蠢的问题。请为一些明智的人编辑标题。
答案 0 :(得分:1)
这里的问题是事件处理程序中的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;
}