jquery addClass和removeClass问题

时间:2012-07-31 02:04:32

标签: javascript jquery html css

我在使用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');
            }
        });
    });
});

2 个答案:

答案 0 :(得分: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');
            }
        });
    });
});

答案 1 :(得分: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');
            }
        });
    });
});