2012-07-31 133 views
0

我遇到了奇怪的jQuery问题以及添加和删除类。我试图看到json请求的成功,对于特定的超链接,它应该调用addClassremoveClass来添加/删除特定的css属性。当我点击它时,它永远不会工作,但是当我单独尝试CSS类时,它们工作正常。有什么我在这里失踪?感谢您的意见。jquery addClass和removeClass问题

$(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'); 
      } 
     }); 
    }); 
}); 
+1

'$(这)'不再是'$引用( 'add_link')''你$ .getJSON'要求内。您需要在请求之外存储对其的引用。 'var me = $(this);'然后'$ .getJSON' ...最后,在if语句中,'me.removeClass()'...等等,这应该对你有帮助 – Ohgodwhy 2012-07-31 02:06:32

回答

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'); 
      } 
     }); 
    }); 
}); 
+0

+1 – KVISH 2012-07-31 02:22:46

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'); 
      } 
     }); 
    }); 
});