JQuery排序后重编序号:如何修改表格单元格内input的value值?
表格排序后重编Order列序号的正确写法
你这段代码里有两个小问题:一是重复初始化了sortable组件,二是获取input元素的链式调用写法错误。咱们来一步步修正:
首先,你不需要分开两次调用$("#sortable").sortable(),可以把排序的配置(比如cursor)和排序结束后的回调(stop)合并到同一个初始化里,这样代码更简洁也避免重复绑定。
然后重点说你出错的那行代码:$(this).find('td:last').$(this).find('input')这种写法是不合法的,jQuery对象后面不能直接接$(this),你需要连贯地用链式查找定位到input元素。
下面是修正后的完整代码:
$(function() { $("#sortable").sortable({ cursor: "move", stop: function (event, ui) { // 遍历排序后的每一行 $(this).find('tr').each(function(index){ // 正确定位最后一列的input并设置序号 $(this).find('td:last input').val(index + 1); }); } }).disableSelection(); });
额外说明:
- 这里的
$(this).find('td:last input')直接从当前行(tr)里找到最后一列的input元素,写法简洁且正确 - 如果你的"Order"列不是固定在最后一列,建议给该列的td加一个专属class(比如
class="order-col"),这样即使列顺序调整,代码也能正常工作:$(this).find('td.order-col input').val(index + 1);
内容的提问来源于stack exchange,提问作者Boygee
相关产品推荐
相关产品推荐

