获取请求后,类不会更改Jquery

时间:2016-01-28 22:12:02

标签: javascript jquery

我在制作jquery get请求后无法更改类。 代码:

<script>
      //global variable
      var table = []
      var numberofaccounts = 0
      $(document).ready(function() {
        $('#form1').validate();
        // add numbers to select ids
        $(".select_changer").each(function(){
          numberofaccounts++;
          var new_id = "select_class"+numberofaccounts;
          $(this).addClass(new_id);
        });

        $('#apply_btn').click(function() {
          table = []
          var count = 0;
          var text = "";
          var tracker = 0
          $('#stats_table tr').each(function(){
            count = 0;
            text = "";
            $(this).find('td').each(function(){
              count++;
              if (count == 4) {
                text += $( ".select_class"+ tracker + " option:selected" ).val();
              } else {
                text += " " + $(this).text() + " ";
              }
            })
            table.push(text);
            tracker++;
          });
          $.post("/apply_changes", {"data":  JSON.stringify(table)}, function(data) {
            var res = JSON.parse(data);
            if (res.data == true){
              $('#updated').text("Update Successful").css('color', 'green');
              $.get("/", function( data ) {
                $('#stats_table').load("/ #stats_table");
                numberofaccounts = 0
                $(".select_changer").each(function(){
                  numberofaccounts++;
                  var new_id = "select_class"+numberofaccounts;
                  $(this).addClass(new_id);
                });
              });
            } else {
              $('#updated').text("Update Unsuccessful").css('color', 'red');
            }
          });
        });

      });
    </script>

因此,当页面首次加载此方法时,会更改动态创建的select元素上的类。

$(".select_changer").each(function(){
          numberofaccounts++;
          var new_id = "select_class"+numberofaccounts;
          $(this).addClass(new_id);
        });

在我发布帖子后,如果响应数据为真,我继续发出get请求以从db中获取更新的项目。然后我刷新表。如果我提出一个请求,这很有效。但是在第二篇文章中没有任何反应。这是因为我在页面加载开始时修改的类不再存在。所以我添加了上面的方法也在get响应之后触发(我也在post响应结束时尝试过)。问题是该方法似乎没有再次运行。这些课程都没有,因此当我去另一个帖子请求时,它无法找到该元素。我该如何解决这个问题? 注意事项:获取请求是必需的,无法静态分配ID和类。

1 个答案:

答案 0 :(得分:2)

您甚至在刷新表之前尝试分配类。

$('#stats_table').load("/ #stats_table");被异步调用,并在它完成之前返回。

您需要在.load()来电的完整回调中为您分配课程代码:

$('#stats_table').load("/ #stats_table", function() {
    numberofaccounts = 0
    $(".select_changer").each(function(){
        numberofaccounts++;
        var new_id = "select_class"+numberofaccounts;
        $(this).addClass(new_id);
    });
});