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

如何在jQuery Sortable拖拽列表中获取被拖拽元素的name属性值

jQuery Sortable 获取拖拽元素的name属性值

我有两个可互相拖拽的jQuery Sortable列表,目前只能获取源列表ID,需要获取被拖拽元素的name属性值。比如把sortable1里的“Item 2”拖拽到sortable2时,要拿到它的name属性值F。

原HTML代码

<ul id="sortable1" class="connectedSortable">
   <li class="ui-state-default" name="B">Item 1</li>
   <li class="ui-state-default" name="F">Item 2</li>
   <li class="ui-state-default" name="X">Item 3</li>
   <li class="ui-state-default" name="G">Item 4</li>
   <li class="ui-state-default" name="H">Item 5</li>
</ul>

<ul id="sortable2" class="connectedSortable">
  <li class="ui-state-highlight" name="a">Item A</li>
  <li class="ui-state-highlight" name="b">Item B</li>
  <li class="ui-state-highlight" name="c">Item C</li>
  <li class="ui-state-highlight" name="d">Item D</li>
  <li class="ui-state-highlight" name="e">Item E</li>
</ul>

原JS脚本

$("#sortable1, #sortable2").sortable({
          connectWith: ".connectedSortable",
          receive: function (event, ui) {                  
              var sourceIndex = ui.sender.children('option:selected').index();     
    //let name = ui.sender.children('option:selected').attr('name');   doesn't work         
          },
          update: function (event, ui) {                  
          }
      }).disableSelection();

解决方案

你之前的代码错误地用了ui.sender.children('option:selected'),但我们的拖拽元素是<li>而非<option>,而且jQuery Sortable已经把被拖拽的元素直接封装在ui.item对象里了。

修改receive回调函数,直接通过ui.item.attr('name')就能获取被拖拽元素的name属性值,同时也可以通过ui.sender.attr('id')拿到源列表的ID:

$("#sortable1, #sortable2").sortable({
    connectWith: ".connectedSortable",
    receive: function (event, ui) {                  
        // 获取被拖拽元素的name属性
        var draggedName = ui.item.attr('name');
        // 获取源列表ID(可选)
        var sourceListId = ui.sender.attr('id');
        
        // 示例:打印结果
        console.log("被拖拽元素name值:" + draggedName);
        console.log("源列表ID:" + sourceListId);
    },
    update: function (event, ui) {                  
    }
}).disableSelection();

这样当你把sortable1中的“Item 2”拖拽到sortable2时,draggedName就会是F,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:04:56