mootools:使用ajax回调来处理clicked元素

时间:2014-04-12 20:25:26

标签: javascript mootools mootools-events

假设我有许多红色链接,并希望向它们添加一个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]);
    }
);

对不起,如果愚蠢的问题。请为一些明智的人编辑标题。

1 个答案:

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

Example