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

Posted

技术标签:

【中文标题】Jquery UI 结合了可排序和可拖动【英文标题】:Jquery UI combine sortable and draggable 【发布时间】:2013-08-26 07:27:57 【问题描述】:

我正在尝试组合一个可拖动面板(顶部)和一个可排序面板(底部)。

拖动工作正常,但排序失败。

这是我的 JS 小提琴: http://jsfiddle.net/dmUKY/9/

拖放功能和可排序功能共享droppable:drop 功能。 在对元素进行排序时,该函数必须替换所选对象。

 drop: function (event, ui) 
    //alert($(this).parent().html());
    //alert($(ui.helper).attr('class'));
    var obj;
    if ($(ui.helper).hasClass('draggable')) 
        //alert('draggable');
      obj = $(ui.helper).clone();  
      obj.removeClass('draggable').addClass('editable')
      //obj.addClass('droppable');
      $(this).parent().append(obj);

    


    //alert($(this).parent().html());

我应该如何结合这两个功能?

【问题讨论】:

【参考方案1】:
$("#sortable").sortable(
    revert: true,
    stop: function(event, ui) 
        if(!ui.item.data('tag') && !ui.item.data('handle')) 
            ui.item.data('tag', true);
            ui.item.fadeTo(400, 0.1);
        
    
);
$("#draggable").draggable(
    connectToSortable: '#sortable',
    helper: 'clone',
    revert: 'invalid'
);
$("ul, li").disableSelection();

DEMO JSFIDDLE

我猜这就是你要找的东西!

【讨论】:

【参考方案2】:

将您的代码更改为此应该可以解决问题:

obj.removeClass('draggable').addClass('editable').removeAttr('style');
//obj.addClass('droppable');
$(this).append(obj);

检查小提琴:http://jsfiddle.net/dmUKY/11/

【讨论】:

谢谢!如果有 2 个单独的可排序区域,我该怎么办?我可以在它们之间交换物品吗? JSfiddle:jsfiddle.net/dmUKY/11 ra_htial 是最好的:)

以上是关于Jquery UI 结合了可排序和可拖动的主要内容,如果未能解决你的问题,请参考以下文章

JQuery 可排序和可拖动的行为

jquery ui 可拖动 + 可排序助手样式

可排序、可拖放和可拖动的容器

jQuery-UI 可拖动和可放置项目变为不可拖动

可拖动和可排序的 Portlet // jQuery

让 jQuery 可排序、可拖放和可拖动以协同工作