代码之家  ›  专栏  ›  技术社区  ›  markus

jquery可拖动+可排序:奇怪的鼠标偏移行为

  •  5
  • markus  · 技术社区  · 15 年前

    我有可拖动的<li>元素列表,可以将其拖动到另一个空的<ul>元素中。如果拖动可拖动原始文件的第一个<li>元素<ul>一切正常…

    问题:

    …但当我拖动该列表的任何其他<li>元素时,“helper”会在我跨过可排序的接收框后立即从鼠标指针移开<ul>。更精确的是,它会上升到列表的顶部。

    有人看到了这一点并知道解决方案吗? 嗯,我的问题是,我只是在使用jquery,并不是很深入,也从来没有真正深入地使用过javascript。

    有关此问题的详细信息:

    我的jQuery代码:

    $(document).ready(function() {
        $('#roleList > li').draggable({
            connectToSortable: '#roleDrop',
            containment: '#container',
            revert: 'invalid'
        });                   
        $('#roleDrop').sortable({
            cursor: 'move',
            containment: '#container',
            revert: true,
            update: function() {
                var order = $('#roleDrop').sortable('serialize');
                $.ajax({
                    type: 'POST',
                    url: '".$postUrl."',
                    dataType: 'html',
                    data: order
                });
            }                          
        });
        $('#roleList').disableSelection();
    });
    

    虽然rolelist和roledrop是前面提到的无序列表,container是一个表。

    现在是发生的事情的屏幕截图。

    我开始拖动项目:

    http://drop.io/download/public/dkabw5hlq3yfm0f84yji/7bf91122adc241373a5da13b5bde4b231644c1c5/da142000-ff76-012b-41ee-f10bc9db08a6/5a1bfa70-68f6-012c-6d08-f2025930ce6a/v2/thumbnail_large

    当我越过第二个<ul>的边界时,帮助者会跳起来。

    http://drop.io/download/public/dkabw5hlq3yfm0f84yji/2fad1d633d38cf593da46c638d1930431ea5fd35/da142000-ff76-012b-41ee-f10bc9db08a6/5c65c4c0-68f6-012c-6601-f12da00d9d47/v2/thumbnail_large

    如果您也需要XHTML标记,请告诉我。

    1 回复  |  直到 15 年前
        1
  •  9
  •   Ron DeVera    15 年前

    尝试添加 helper: 'clone' 对你 .draggable 选项:

    $('#roleList > li').draggable({
        helper: 'clone',
        connectToSortable: '#roleDrop',
        containment: '#container',
        revert: 'invalid'
    });                   
    

    根据 the jQuery documentation 将可拖动的连接到可排序的时,应设置此选项。

    虽然这会产生不同的界面体验(拖动的项是克隆的,而不是移动的),但对于文档所暗示的已知问题,它至少是一个临时的解决方案。额外的事件处理可以清除原始项目 #roleList 期间 #roleDrop 更新回调。