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