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

使用jQueryUI Draggable/Droppable clone时获取原元素数据/属性的问题

解决jQuery UI Draggable Clone模式下获取原元素属性的问题

我太懂你这个困扰了——当设置helper: 'clone'后,拖拽事件里默认操作的是克隆出来的辅助元素,不是你真正想要的原表格行,所以直接去拿data-id肯定会失败。不用额外记录全局变量的话,咱们可以借助拖拽事件的回调来传递原元素的引用,具体方法如下:

步骤1:拖拽开始时把原元素绑定到Helper上

初始化draggable的时候,利用start事件把原元素的引用存到克隆出来的helper里:

$(".draggable").draggable({
  helper: 'clone',
  start: function(event, ui) {
    // 把当前原行(this就是原元素)存入helper的data中
    ui.helper.data('originalRow', $(this));
  }
});

步骤2:放置时从Helper取出原元素获取属性

在droppable的drop事件里,从helper的data中取出原元素,就能轻松拿到它的data-id或者其他属性了:

$(".droppable").droppable({
  accept: ".draggable",
  drop: function(event, ui) {
    // 取出存储的原行元素
    const originalRow = ui.helper.data('originalRow');
    // 获取原行的data-id属性
    const targetId = originalRow.data('id');
    
    // 这里可以做你需要的逻辑,比如打印或者使用这个ID
    console.log("原表格行的data-id是:", targetId);
    
    // 最后把克隆的行添加到目标表格(如果需要的话)
    ui.helper.appendTo(this);
  }
});

原理说明

start事件触发时,回调里的this指向的是被拖拽的原表格行,我们通过ui.helper.data()把这个原元素绑定到克隆出来的helper上。等到drop事件触发时,再从helper的data中取出原元素,就能访问它所有的属性和数据了,完全不需要额外的全局变量来记录状态。

内容的提问来源于stack exchange,提问作者A.O.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:14:40