我一直都在寻找这个,但没有多少运气。
所以给出了这段代码:
$("span[id*=Section]").click(function(){
var row = $(this).parents("tr.MoveableRow:first");
if ($(this).is(".up_button")) {
row.insertBefore(row.prev());
section = this.id;
$("input[name='" + section + "']").val(row.closest("tr").prevAll("tr").length + 1);
} else {
row.insertAfter(row.next());
section = this.id;
$("input[name='" + section + "']").val(row.closest("tr").prevAll("tr").length + 1);
}
});
目前,当点击向上/向下按钮时,TR会按预期向上或向下移动。 “input [name =”部分获取跨度ID的传入值,并将新值分配给该TR中的隐藏字段。
这样做最终会给我重复的ID。例如,我将第2行移动到第1行。旧第2行的隐藏输入值变为1,但原始1的隐藏输入也为1。
所以我需要做的就是制作旧的1,新的2。
答案 0 :(得分:0)
难道你不会对你移动的那行做同样的事情吗? (并且因为你在上下情况下做同样的事情,你可以稍微简化你的代码)
$("span[id*=Section]").click(function(){
var row = $(this).parents("tr.MoveableRow:first");
if ($(this).is(".up_button")) {
row.insertBefore(row.prev());
} else {
row.insertAfter(row.next());
}
$("input[name='" + this.id + "']").val(row.closest("tr").prevAll("tr").length + 1);
$("input[name='" + row[0].id + "']").val(row.closest("tr").prevAll("tr").length + 1);
});
您也可以使用.index()
,但我不知道您的HTML是什么样的:
$("span[id*=Section]").click(function(){
var row = $(this).parents("tr.MoveableRow:first");
var offset = 1; // Offset of TR being swapped with (up/down)
if ($(this).is(".up_button")) {
row.insertBefore(row.prev());
} else {
row.insertAfter(row.next());
offset = -1;
}
var position = $('tr.MoveableRow').index(row) + 1;
$("input[name='" + this.id + "']").val( position );
$("input[name='" + row[0].id + "']").val( position + offset );
});