我在使用jQuery以及添加和删除类时遇到了一些奇怪的问题。我试图看到json请求成功,对于特定的超链接,它应该调用addClass
和removeClass
来添加/删除特定的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');
}
});
});
});
答案 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');
}
});
});
});