鼠标跨框可拖动+可排序的偏移量无效

Sti*_*pal 4 javascript iframe jquery-ui-sortable jquery-ui-droppable

我们目前正在尝试完成jQuery UI提供的可拖动对象和可排序对象之间的跨框架拖动。现在这可以正常工作。但是,从父帧拖动到子帧时,鼠标偏移似乎不存在-请参见以下小提琴:http : //jsfiddle.net/r5nfe/6/

父代码:

$('#my-frame').load(function () {
    $('.draggable').draggable({
        appendTo: 'body',
        helper: 'clone',
        iframeFix: true,
        revert: 'invalid',
        connectToSortable: $('#my-frame').contents().find('.sortable'),
        cursorAt: { top: 0, left: 0 } 
    });

    $('#my-frame').contents().find('.sortable').sortable({
        iframeFix: true,
        cursorAt: { top: 0, left: 0 } 
    });
});
Run Code Online (Sandbox Code Playgroud)

子框架中的代码:

var containers = $('.sortable');
containers.sortable({
    connectWith: containers,
    cursor: 'move',
    revert: true,
    cursorAt: { top: 0, left: 0 } 
});
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我们如何解决鼠标偏移吗?

Ale*_*lli 5

解决方案2更新

我添加此js函数是因为,当您向iframe中添加太多可拖动元素时,如果向下滚动,则拖动元素可能会与可排序元素重叠

$('.draggable').on('dragstop',autoResize);


function autoResize(){
    var newheight;
    if(document.getElementById){
        newheight=document.getElementById('my-frame').contentWindow.document .body.scrollHeight;
    }
    newheight=newheight+100;
    $('#my-frame').css('height',newheight);
}
Run Code Online (Sandbox Code Playgroud)

这是新的jsfiddle
最终解决方案2更新

这个问题似乎是一个错误,有人解决了这个问题(基本上是一种解决方法):透明div解决方案

1 我的第一个解决方案,在不改变该代码,可以是在将可拖动的东西之前放置的IFRAME,如图这里,代码:

<iframe id="my-frame" src="/VqxGf/3/show"></iframe>
<ul>
    <li class="draggable">Drag me</li>
    <li class="draggable">Drag me 2</li>
    <li class="draggable">Drag me 3</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

2 另一个可行的解决方案是使用style属性:ul的绝对位置,其中包含可拖动对象

  • s,则是框架中可排序内容的一点空白,也许是frameborder = 0。jsfiddle 主页:

    <ul style="position:absolute">
        <li class="draggable">Drag me</li>
        <li class="draggable">Drag me 2</li>
        <li class="draggable">Drag me 3</li>
    </ul>
    <iframe frameborder="0" id="my-frame" src="/ATu6F/30/show"></iframe>
    
    Run Code Online (Sandbox Code Playgroud)

    iframe页面:

    <ul id="sortable" style="margin-top:100px" class="sortable idle">
        <li>Sortable</li>
        <li>Sortable 2</li>
        <li>Sortable 3</li>
    </ul>
    
    <ul id="sortable2" class="sortable idle">
        <li>Sortable</li>
        <li>Sortable 2</li>
        <li>Sortable 3</li>
    </ul>
    
    Run Code Online (Sandbox Code Playgroud)

    希望这可以帮助。

    请参阅本文开头的修改内容