jQuery ui 替换拖动项的内容

Posted

技术标签:

【中文标题】jQuery ui 替换拖动项的内容【英文标题】:jQuery ui replace contents of dragged item 【发布时间】:2019-12-06 18:42:27 【问题描述】:

我想替换掉项目的 html 内容。我能够附加新的 html 内容,但在这种情况下,sortable 接收拖动的项目并附加新项目。

receive: function (event, ui) 
    $(this).append('<li class="new">this is item 1</li>'); 

我怎样才能真正用新项目替换拖动的项目而不是追加?或者删除原来的拖拽项?

演示: http://jsfiddle.net/v97u5qtx/

HTML:

<ul id="answers">
  <li id="item-1">Item 1</li>
  <li id="item-2">Item 2</li>

</ul>

<ul class="container">
</ul>

jQuery:

$(function() 

    $("#answers li").draggable(
      connectToSortable: '.container',
      helper: 'clone',
      revertDuration: 0,
    revert: true
    );

    $(".container").sortable(
        connectWith: '.container',
            revert: true,
        receive: function (event, ui) 
          var id = ui.item.attr("id");

             if ( id == 'item-1') 
            $(this).append('<li class="new">this is item 1</li>');    
           else if ( id == 'item-2') 
            $(this).append('<li class="new">this is item 2</li>'); 
              
        
    );

    $("ul, li").disableSelection();

);

【问题讨论】:

你可以吗? jsfiddle.net/7szcwv6p @HardikLeuwa 谢谢,但正如您在您的示例中,当您拖动第二个项目时,它会删除所有以前拖动的项目,因此不起作用。 【参考方案1】:

请检查,

更新容器代码如下,

$(".container").sortable(
    connectWith: '.container',
        revert: true,
    receive: function (event, ui) 
      var id = ui.item.attr("id");

      if ( id == 'item-1') 
        $(this).append('<li class="new">this is item 1</li>');    
       else if ( id == 'item-2') 
        $(this).append('<li class="new">this is item 2</li>'); 
          

      $('.container .ui-draggable').remove();
    
);

DEMO

【讨论】:

以上是关于jQuery ui 替换拖动项的内容的主要内容,如果未能解决你的问题,请参考以下文章

jquery ui sortable 拖动的时候,radio和checkbox的选中状态无法保存

jQuery UI 可拖动元素放入可排序

通过Jquery UI可拖动时应用阴影可排序

使用 jQuery-UI Sortable 控制占位符高度

Jquery UI 结合了可排序和可拖动

保存并加载动态创建的可拖动元素的位置(jQuery-UI)