Javascript 使用jQuery在选择选项时更新元素索引

Javascript 使用jQuery在选择选项时更新元素索引,javascript,jquery,Javascript,Jquery,我有一个基本表: <table> <tr> <td class="priority-select"><select></select></td> </tr> <tr> <td class="priority-select"><select></select></td> </tr>

我有一个基本表:

<table>
    <tr>
        <td class="priority-select"><select></select></td>
    </tr>
    <tr>
        <td class="priority-select"><select></select></td>
    </tr>
    <tr>
        <td class="priority-select"><select></select></td>
    </tr>
    <tr>
        <td class="priority-select"><select></select></td>
    </tr>
</table>
我用这个片段来做这件事:

var $selects = $(".select");
  var selCount = $selects.length;
  for(var i=1; i<=selCount; i++){
    $selects.append("<option value='" + i + "'>" + i + "</option>");
  };
var$selects=$(“.select”);
var selCount=$selects.length;

对于(var i=1;i您的问题意味着您已经根据索引选择了适当的数字,但我在您的代码中没有看到这一点。您可以按如下方式执行:

function renumber() {
    // select the appropriate number for each
    $("select").val(function (i) {
        return i + 1;
    });
}
然后,对于重新订购:

$selects.change(function () {
    var $this = $(this);
    var val = $this.val();
    var $row = $this.closest("tr");
    var $parent = $row.parent();

    $row.detach();
    var $nextRow = $parent.find("tr:eq(" + (val-1) +")");

    if($nextRow.length > 0){
        $nextRow.before($row); 
    } else {
        $parent.append($row);
    }

    renumber();
});

如果有一个插件,比如我已经在使用datatables,你可能会更高兴,但最好看看,因为我还没有考虑过这个问题。我看了一下,似乎这就成功了。我会仔细看看,但你似乎很好地满足了这个问题。谢谢。
$selects.change(function () {
    var $this = $(this);
    var val = $this.val();
    var $row = $this.closest("tr");
    var $parent = $row.parent();

    $row.detach();
    var $nextRow = $parent.find("tr:eq(" + (val-1) +")");

    if($nextRow.length > 0){
        $nextRow.before($row); 
    } else {
        $parent.append($row);
    }

    renumber();
});