使用AJAX更改输入样式

我有以下AJAX代码正常工作,除了我想要将类添加到刚检查的输入字段的部分。

输入字段:

 

AJAX代码:

  $('.solution').on("change", function(){ var form_data = { name: $(this).val(), ajax: '1' }; $.ajax({ url: "", type:'POST', data: form_data, success: function(msg){ $('#message').html(msg); this.addClass('solution_correct'); //outputs: Correct! }, error: function(msg){ $('#message').html(msg); this.addClass('solution_wrong'); //outputs: Wrong! Try again! } }); return false; });  

所以,问题将在“this.addClass(’…’)行;我已经尝试使用$(this),但这也不起作用。

这可能是非常愚蠢的事情,但我似乎无法弄明白!

提前致谢 :)

你可以在调用$ .ajax时设置context属性,这将在所有回调中设置为this

  $('.solution').on("change", function(){ var form_data = { name: $(this).val(), ajax: '1' }; $.ajax({ url: "", type:'POST', context: $(this),//<--- here data: form_data, success: function(msg){ $('#message').html(msg); this.addClass('solution_correct'); //outputs: Correct! }, error: function(msg){ $('#message').html(msg); this.addClass('solution_wrong'); //outputs: Wrong! Try again! } }); return false; });  

inheritance人的方式

  $('.solution').on("change", function(){ var $self = $(this); var form_data = { name: $(this).val(), ajax: '1' }; $.ajax({ url: "", type:'POST', data: form_data, success: function(msg){ $('#message').html(msg); $self.addClass('solution_correct'); //outputs: Correct! }, error: function(msg){ $('#message').html(msg); $self.addClass('solution_wrong'); //outputs: Wrong! Try again! } }); return false; });