【问题标题】:jquery chessboard-like Sortable divjQuery 棋盘状的可排序 div
【发布时间】:2012-04-27 09:52:06
【问题描述】:

我在 jquery 中使用 sortable() 函数以便在 div 中构建类似“棋盘”的东西。我想要实现的是有一个带有可排序项目的 div,类似于 sortable example,您可以将它们拖放到预定义的位置(如国际象棋)。除了可排序的示例之外,我还想做this 之类的事情(假设这是一个 div)。

这是我目前的代码

    <style>
#sortable { list-style-type: none; margin: 0; padding: 0; }
#sortable li { margin: 3px 3px 3px 0; padding: 1px; float: left; width: 100px; height: 90px; font-size: 4em; text-align: center; }
    .class { width: 350px; height: 350px; }
</style>
<script>
$(function() {
    $( "#sortable" ).sortable();
    $( "#sortable" ).disableSelection();
});
</script>


<div class="demo">

<ul id="sortable">
<li class="ui-state-default">1</li>
<li class="ui-state-default">2</li>
<li class="ui-state-default">3</li>
<li class="ui-state-default">4</li>
<li class="ui-state-default">5</li>
</ul>

</div>

【问题讨论】:

  • 我的问题是我如何移动可排序的项目,就像我在我的问题中发布的照片​​一样。看看照片。如果我尝试离开 (3) 那里它会“快速”回到它的位置

标签: jquery jquery-ui-sortable


【解决方案1】:

我想你想使用 draggable
这是你想要达到的目标吗? http://jsfiddle.net/GbQH2/3/

var original;
$( "#sortable li" ).draggable({
    grid: [100,100],
    containment:'#demo',
    start:function(event, ui){

        original = $(ui.helper).position();
    }
});
$('#sortable li').each(function(){
    $(this).css({top:$(this).position().top,left:$(this).position().left});
});
$('#sortable li').css({position:'absolute'});

$( "#sortable li" ).bind( "dragstop", function(event, ui) {
    $( "#sortable li" ).each(function(){
        if ($(this).hasClass('ui-draggable-dragging')) return;
        if(compareOffset($(this).offset(),ui.offset)){
            console.log(original);
            $(this).css({left:original.left,top:original.top});
            console.log($(this).position());
            return;
        }         
    });
});

function compareOffset(offset1, offset2){
    return offset1.top==offset2.top && offset1.left==offset2.left;
}

【讨论】:

  • 网格!这正是我想要的!我对你的代码的唯一问题是,如果你把一个元素放在另一个元素的顶部,它就会呆在那里。你知道如何解决这个问题吗?
  • 是的,这有点复杂,因为它不是由 jQuery 原生处理的
    我认为这就是你想要的:jsfiddle.net/GbQH2/3
  • 嘿,我对此有另一个问题.. 是否可以在拖动开始时禁用对齐网格,然后在拖动停止处再次启用它??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多