You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery UI sortable对动态生成表格不生效问题咨询

问题原因

你在DOM就绪回调里执行的$('table').sortable(),只会对执行当下已经存在于页面DOM树中的table元素生效,完成sortable拖拽功能的初始化。后续通过JS动态生成插入的表格,没有执行过sortable初始化逻辑,自然不会具备拖拽排序能力。
另外你的现有代码还有一个逻辑问题:点击按钮时使用$('#main').html(content)会直接覆盖#main容器内的所有原有内容,包括初始渲染的表格、触发生成操作的按钮,会导致按钮点击一次后就从页面消失。

修复方案
  • 调整新表格的插入逻辑,把覆盖容器内容的.html()方法改为追加内容的.append()方法,避免误删原有页面元素。
  • 每次把新生成的表格插入DOM之后,针对这个新表格单独调用.sortable()方法完成初始化。

修正后的some.js代码如下:

// 页面初始加载完成后,给已存在的表格绑定sortable拖拽能力
$(function(){
  $('table').sortable();
});

// 绑定按钮点击事件生成新表格
$(document).on('click','#test',function(){
  // 用模板字符串定义表格结构,避免多行字符串转义问题
  const tableStr = `<table>
               <tr>
                 <td>1</td>
                 <td>2</td>
               </tr>
               <tr>
                 <td>3</td>
                 <td>4</td>
               </tr>
             </table>`;

  const newTable = $.parseHTML(tableStr);
  // 追加新表格到容器,不覆盖原有内容
  $('#main').append(newTable);
  // 给新插入的表格初始化sortable功能
  $(newTable).filter('table').sortable();
});

说明:jQuery UI的sortable是组件初始化方法,不会自动监听后续动态插入的元素,不存在类似事件委托的一劳永逸绑定方式,必须给每个动态新增的目标元素单独执行初始化。

内容的提问来源于stack exchange,提问作者maxischl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 03:06:17