我在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>
答案 0 :(得分:1)
我认为你想使用可拖动
这是你想要达到的目标吗? 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;
}