Javascript jQuery可排序序列化无法识别动态添加的内容

Javascript jQuery可排序序列化无法识别动态添加的内容,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图在sortable更新时通过ajax重新排序列表,但是在sortable在页面加载时已初始化之后,通过ajax向该列表添加新项后,它无法使用“serialize”函数识别新项。它确实允许我把它拖来拖去,就好像它在工作一样,但是用update函数发送的代码缺少新元素 //对类别进行排序 $(“#类别列表”).find('tbody').sortable({ 连接到:“tbody”, 不透明度:0.6, 光标:“移动”, 大小:true, 更新:职能(e){ var serialized=$

我试图在sortable更新时通过ajax重新排序列表,但是在sortable在页面加载时已初始化之后,通过ajax向该列表添加新项后,它无法使用“serialize”函数识别新项。它确实允许我把它拖来拖去,就好像它在工作一样,但是用update函数发送的代码缺少新元素

//对类别进行排序
$(“#类别列表”).find('tbody').sortable({
连接到:“tbody”,
不透明度:0.6,
光标:“移动”,
大小:true,
更新:职能(e){
var serialized=$(“#类别列表tbody”).sortable('serialize');
console.log(序列化);
$.post('admin/ereg\u forms/set\u category\u position',序列化,函数(数据){
如果(data.status=='error'){
警报(数据、消息);
}
});
}
});
//添加类别提交
$(“#添加类别提交”)。单击(功能(e){
e、 预防默认值();
$(“.errors block”).html(“”);
$(“#添加类别提交”).hide();
$.ajax({
url:$(“#添加类别表单”).attr('action'),
键入:“POST”,
数据:$('#添加类别表单')。序列化(),
数据类型:“json”,
成功:功能(数据){
$(“#添加类别提交”).show();
//检查服务器端验证是否通过
如果(data.status=='error'){
//在弹出对话框上显示错误
$(“#添加类别表单.errors块”).html(data.message);
警报('抱歉,发送的信息无效。请检查表单顶部的错误,然后重试');
}否则{
var类别_数据=data.data;
变量tableRow='↕;'+
''+类别\数据标题+
''
$(tableRow).appendTo(“#类别列表主体”);
重置表单($(“#添加类别表单”);
//关闭弹出窗口
$(“#添加类别”)。对话框(“关闭”);
$(“类别已保存。”)。对话框({
莫代尔:是的,
宽度:“自动”
});
}
},
错误:函数(数据){
警报('发生未知错误,请重试');
$(“#添加类别提交”).show();
}
});
});

标题
↕
测试1
↕
测验

IDK发生了什么,但是这个伪添加有效,也许你可以模仿它?注意:我解决了几个语法问题,并使用ajax promise方法来更好地组织它

我建议您更新jQuery版本,在更新的版本中添加一些更好的东西,并进行bug修复

//对类别进行排序
$(“#类别列表”).find('tbody').sortable({
连接到:“tbody”,
不透明度:0.6,
光标:“移动”,
大小:true,
更新:职能(e){
var serialized=$(“#类别列表tbody”).sortable('serialize');
console.log(序列化);
//$.post('admin/ereg\u forms/set\u category\u position',序列化,函数(数据){
//如果(data.status=='error'){
//警报(数据、消息);
//  }
// });
}
});
$('addmorebool')。在('click',AddMore');
函数AddMore(){
让tbody=$(“#类别列表”)。查找('tbody');
让rowscont=tbody.find('tr').length;
让纽罗↕测试'+ROWSCONT+'';
tbody.append(newRow);
}
AddMore();
//添加类别提交
$(“#添加类别sumbit”)。在('click',函数(e){
//控制台日志(“howdy”);
e、 预防默认值();
var myform=$(“#添加类别表格”);
var errorBlock=myform.find(“.errors block”);
errorBlock.html(“”);
errorBlock.dialog({
莫代尔:是的,
宽度:“自动”,
自动打开:错误
});
var catSub=$(“#添加类别提交”);
catSub.hide();
var myjax=$.ajax({
url:myform.attr('action'),
键入:“POST”,
数据:myform.serialize(),
数据类型:“json”
})
.完成(功能(数据){
catSub.show();
//检查服务器端验证是否通过
var类别_数据=data.data;
var tableRow=$('↕;'+
''+类别\数据标题+
'');
让tbody=$(“#类别列表”)。查找('tbody');
tbody.append(tableRow);
表格(myform);
//关闭弹出窗口(没有原因)
//(“#添加类别”)。对话框(“关闭”);
$(“类别已保存。”)。对话框({
莫代尔:是的,
宽度:“自动”
});
}).失败(功能(数据){
//在弹出对话框上显示错误
errorBlock.html('抱歉,发送的信息无效。请检查表单顶部的错误,然后重试。'+data.message);
errorBlock.dialog(“打开”);
//catSub.show();(输出原因不在代码中)
});
});
trtd{
边框:1px固体石灰;
}

我是一张空表,那又怎样
我错了,阿金?不可能
标题
↕
测试1
↕
测验
添加更多
我的错误

添加类别
我最终解决了这个问题,问题出在添加类别函数中,我对类别行{id}应用了“class”属性而不是“id”属性。

$(“#添加类别提交”)
在您发布的代码中不存在。您使用的是什么“可排序的”?请修改以显示一个工作示例。我编辑了sortable,做了广泛的假设。@Markschultheis我添加了添加类别提交功能并更新了jQuery版本,您添加的jQueryUI版本是正确的。这基本上就是我在我的网站上的内容,除了我删除了一些专栏,使之成为一个更简单的例子。感谢你对这一个的帮助,我发布了我自己的答案,因为它最终是其他东西,但感谢你展示了这个工作示例!