代码之家  ›  专栏  ›  技术社区  ›  klew

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

  •  4
  • klew  · 技术社区  · 15 年前

    我添加了动态输入字段,如下所示:

    <input id="person__1_badge_number" class="number" type="text" size="12" name="person[][1][badge][number]"/>
    

    当我添加这个字段时,我调用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");
     });
    }
    

    2 回复  |  直到 15 年前
        1
  •  6
  •   Jose Basilio    15 年前

    我认为在回调之后,对$(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");
     });
    }
    
        2
  •  2
  •   karim79    15 年前

    您可以按id引用元素:

    $('#person__1_badge_number').addClass('make_it_red');
    

    此外,这取决于您动态插入元素的方式,例如,如果您只是将元素作为字符串附加到某个div,那么它可能不会绑定到DOM。

     function please_rebind() {
      $('.number').bind("change", function() {
        var elementId = this.id;
        $.post('/registration/sell/check_badge_number', { number: $(this).val() },
        function(data) {
          $('#' + elementId).addClass('make_it_red');
          alert(data);
        }, "html");
     });
    }