我在制作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和类。
答案 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);
});
});