如何在jQuery中调用ajax后更新样式?

kle*_*lew 4 ajax jquery css-selectors

我有动态添加像这样的输入字段:

<input id="person__1_badge_number" class="number" type="text" size="12" name="person[][1][badge][number]"/>
Run Code Online (Sandbox Code Playgroud)

当我添加这个字段时,我称之为fallowing功能:

function please_rebind() {
  $('.number').bind("change", function() {
    $.post('/registration/sell/check_badge_number', { number: $(this).val() },
    function(data) {
      $(this).addClass('make_it_red');
      alert(data);
    }, "html");
 });
}
Run Code Online (Sandbox Code Playgroud)

它没有在我的输入字段中添加'make_it_red'类(我也尝试过html('foo')和其他东西,但它也不起作用).我认为这是因为我在其他函数中运行$(this),但我不知道如何处理它.$(this).val()有效,我也得到正确的响应(alert(data)).有人可以帮忙吗?

Jos*_*lio 6

我认为发生的事情是在回调之后,对$(this)的引用丢失了.试试这种方式:

function please_rebind() {
  $('.number').bind("change", function() {
    var that = $(this);
    $.post('/registration/sell/check_badge_number', { number: $(this).val() },
    function(data) {
      that.addClass('make_it_red');          
    }, "html");
 });
}
Run Code Online (Sandbox Code Playgroud)