0

我在使用 jQuery 以及添加和删除类时遇到了奇怪的问题。我试图查看 json 请求是否成功,对于特定的超链接,它应该调用addClassremoveClass添加/删除特定的 css 属性。当我单击它时,它永远不会工作,但是当我独立尝试 css 类时,它们工作正常。我在这里缺少什么吗?感谢您的输入。

$(document).ready(function() {
    $('.add_link').bind("click", function(e) {
        $.getJSON("/add/", function(json) {
            if (json.SUCCESS != null) {
                $(this).removeClass('blue_button_link').addClass('gray_out_button_link');
            }
        });
    });
});
4

2 回答 2

2
$(document).ready(function() {
    $('.add_link').bind("click", function(e) {
        // cache it in a local variable.
        var $this = $(this);
        $.getJSON("/add/", function(json) {
            if (json.SUCCESS != null) {
                $this.removeClass('blue_button_link').addClass('gray_out_button_link');
            }
        });
    });
});
于 2012-07-31T02:06:42.923 回答
1

在事件处理程序中,您有另一个上下文,因此您无法使用this您想要的方式。尝试:

$(document).ready(function() {
    var link = $('.add_link');

    link.bind("click", function(e) {
        $.getJSON("/add/", function (json) {
            if (json.SUCCESS != null) {
                link.removeClass('blue_button_link').addClass('gray_out_button_link');
            }
        });
    });
});

或者:

$(document).ready(function() {
    $('.add_link').bind("click", function(e) {
        var link = $(this);

        $.getJSON("/add/", function (json) {
            if (json.SUCCESS != null) {
                link.removeClass('blue_button_link').addClass('gray_out_button_link');
            }
        });
    });
});
于 2012-07-31T02:07:32.520 回答