Javascript mootools:使用单击的元素进行ajax回调
假设我有许多红色的链接,并希望向它们添加一个单击事件,这样当它触发时,它会将链接的HREF属性发送到服务器(作为AJAX请求),成功后,链接颜色将更改为绿色。 我想要像这样的东西:Javascript mootools:使用单击的元素进行ajax回调,javascript,mootools,mootools-events,Javascript,Mootools,Mootools Events,假设我有许多红色的链接,并希望向它们添加一个单击事件,这样当它触发时,它会将链接的HREF属性发送到服务器(作为AJAX请求),成功后,链接颜色将更改为绿色。 我想要像这样的东西: $$('a.red').addEvent( "click", function () { new Request.JSON({ url: 'script.php', onSuccess: function(){
$$('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]);
}
);
.green {
color: green;
}
对不起,我问了一个愚蠢的问题。请将标题编辑为合理的标题。这里的问题是,事件处理程序中的
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中使用如下内容:
$$('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]);
}
);
.green {
color: green;
}
这和你要找的东西有关吗?:没错@Sergio:)明白了,重点是“自我”变量。。。非常感谢,谢谢。我在最后一行做了一个小小的改动,这是对你有用的描述的尊重。@MortezaE,太好了!顺便说一句,如果该链接有href,您可能希望有一个
event.stop()
并将event
传递到事件处理程序中。以防止页面跟随链接。