Jquery 如何处理表中动态创建的tr
我正在使用ajax,用户可以一次请求多个ajax。对于每个用户请求,我将在表中创建一个tr,该表显示用户请求的当前过程 用户可以一次请求多个文件。在此表中,两个文件使用linux命令多次上载 我的ajax代码是:-Jquery 如何处理表中动态创建的tr,jquery,ajax,Jquery,Ajax,我正在使用ajax,用户可以一次请求多个ajax。对于每个用户请求,我将在表中创建一个tr,该表显示用户请求的当前过程 用户可以一次请求多个文件。在此表中,两个文件使用linux命令多次上载 我的ajax代码是:- $('#mxf').on('submit', function(event){ event.preventDefault(); d = new Date(); $.ajax({ u
$('#mxf').on('submit', function(event){
event.preventDefault();
d = new Date();
$.ajax({
url : $(this).attr('action'),
type : $(this).attr('method'),
dataType: 'json',
data : $(this).serialize(),
beforeSend: function() {
var row = '<tr>';
row += '<td>'+$('#fileid').val()+'</td>';
row += '<td>'+$('#ndrive').val()+'</td>';
row += '<td>date</td>';
row += '<td>time</td>';
row += '<td><div id="process-bar" class="process-bar"> </div></td>';
row += '</tr>';
$('#stastistics tbody').prepend(row);
$('#fileid').val('');
$('#ndrive').val('');
},
success : function(data) {
if(data.status == 'error')
{
var html = '<span class="label label-danger">Error</span>';
$("tr td:nth-child(5)").find('#process-bar').remove();
$("tr td:nth-child(5)").html(html);
}
else if(data.status == 'success')
{
var html = '<span class="label label-success">Success</span>';
$("tr td:nth-child(5)").find('#process-bar').remove();
$("tr td:nth-child(5)").html(html);
}
},
error : function( xhr, err ) {
},
});
});
$('#mxf')。关于('submit',函数(事件){
event.preventDefault();
d=新日期();
$.ajax({
url:$(this.attr('action'),
类型:$(this.attr('method'),
数据类型:“json”,
数据:$(this).serialize(),
beforeSend:function(){
var行=“”;
行+=''+$('#fileid').val()+'';
行+=''+$('#ndrive').val()+'';
行+='日期';
行+=‘时间’;
行+='';
行+='';
$(“#统计数据体”)。前置(行);
$('#fileid').val('');
$('#ndrive').val('');
},
成功:功能(数据){
如果(data.status=='error')
{
var html='Error';
$(“tr td:nth child(5)”).find(“#进程栏”).remove();
$(“trtd:nth child(5)”).html(html);
}
else if(data.status==“success”)
{
var html='Success';
$(“tr td:nth child(5)”).find(“#进程栏”).remove();
$(“trtd:nth child(5)”).html(html);
}
},
错误:函数(xhr,err){
},
});
});
- 在beforeSend函数中,我为每个请求创建一个新行
- 在成功方法中,我将第五个td“处理”更新为“成功”或“错误”
谢谢您需要生成一个唯一的id或标记类,并将其添加到html中。您可以将id生成一个变量,该变量将通过闭包提供给Ajax成功方法。您可以使用诸如下划线.js之类的库生成一个唯一的id,也可以滚动自己的id,如以下堆栈溢出帖子所示:。我的示例将使用下划线。请注意,如果不需要轻松访问行的其余部分,也可以在表单元格上设置id。我还执行了一次选择器,并将结果保存在$cell中以供重用。这会更有效率
$('#mxf').on('submit', function(event){
var d = new Date(), // you had this as a global
tempId = _.uniqueId("row_");
event.preventDefault();
$.ajax({
url : $(this).attr('action'),
type : $(this).attr('method'),
dataType: 'json',
data : $(this).serialize(),
beforeSend: function() {
var row = '<tr ' + 'id="' + tempId + '">';
row += '<td>'+$('#fileid').val()+'</td>';
row += '<td>'+$('#ndrive').val()+'</td>';
row += '<td>date</td>';
row += '<td>time</td>';
row += '<td><div id="process-bar" class="process-bar"> </div></td>';
row += '</tr>';
$('#stastistics tbody').prepend(row);
$('#fileid').val('');
$('#ndrive').val('');
},
success : function(data) {
var $cell = $("tr#" + tempId + " td:nth-child(5)");
if(data.status == 'error')
{
var html = '<span class="label label-danger">Error</span>';
$cell.find('#process-bar').remove();
$cell.html(html);
}
else if(data.status == 'success')
{
var html = '<span class="label label-success">Success</span>';
$cell.find('#process-bar').remove();
$cell.html(html);
}
},
error : function( xhr, err ) {
},
});
});
$('#mxf')。关于('submit',函数(事件){
var d=new Date(),//这是一个全局变量
tempId=uu.uniqueId(“行”);
event.preventDefault();
$.ajax({
url:$(this.attr('action'),
类型:$(this.attr('method'),
数据类型:“json”,
数据:$(this).serialize(),
beforeSend:function(){
var行=“”;
行+=''+$('#fileid').val()+'';
行+=''+$('#ndrive').val()+'';
行+='日期';
行+=‘时间’;
行+='';
行+='';
$(“#统计数据体”)。前置(行);
$('#fileid').val('');
$('#ndrive').val('');
},
成功:功能(数据){
var$cell=$(“tr#“+tempId+“td:n个孩子(5)”);
如果(data.status=='error')
{
var html='Error';
$cell.find(“#进程栏”).remove();
$cell.html(html);
}
else if(data.status==“success”)
{
var html='Success';
$cell.find(“#进程栏”).remove();
$cell.html(html);
}
},
错误:函数(xhr,err){
},
});
});
这应该可以解决问题。您需要使选择器更加具体。您可以为每个请求的tr或td生成一个唯一的id或标记类。但是,我如何才能找到哪个请求给出响应,以便处理特定的tr@BJSafdieI在我的iPad上,编写代码非常麻烦。如果当时没有其他人插话,我会在真正的键盘前添加答案。您的帮助将非常可观@bjsafdie如果有效,请不要忘记将问题标记为已回答。感谢您的支持,但要接受答案,您需要单击计票下方的复选框。这篇文章显示了屏幕截图: