jQuery行更改和ID

时间:2012-03-16 22:17:36

标签: jquery

我一直都在寻找这个,但没有多少运气。

所以给出了这段代码:

$("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。

1 个答案:

答案 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 );
});