Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jQuery中调用ajax后如何更新样式?_Jquery_Ajax_Css Selectors - Fatal编程技术网

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

在jQuery中调用ajax后如何更新样式?,jquery,ajax,css-selectors,Jquery,Ajax,Css Selectors,我添加了动态输入字段,如下所示: <input id="person__1_badge_number" class="number" type="text" size="12" name="person[][1][badge][number]"/> 而且它没有将“make_it_red”类添加到我的输入字段中(我还尝试了html(“foo”)和其他东西,但它也不起作用)。我认为这是因为我在其他函数中运行$(这个),但我不知道如何处理它。 $(this).val()工作正常,我也得到

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

<input id="person__1_badge_number" class="number" type="text" size="12" name="person[][1][badge][number]"/>
而且它没有将“make_it_red”类添加到我的输入字段中(我还尝试了html(“foo”)和其他东西,但它也不起作用)。我认为这是因为我在其他函数中运行$(这个),但我不知道如何处理它。
$(this).val()工作正常,我也得到了正确的响应(警报(数据))。有人能帮忙吗?

您可以通过id引用元素:

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

编辑:您可以从绑定中获取元素ID,并在回调中构建选择器:

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

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

只是想在$的回调中添加“this”。post指的是给定ajax请求的选项。这是JS中反复出现的难题之一,“this”的波动性。只要记住在定义回调时使用这个技巧。当然,这会使函数成为一个完整的闭包,IE开发人员认为这是一种“糟糕的做法”。在这些情况下,他们更愿意让JScript不起作用。
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");
 });
}