我想要一些方形的可拖动对象(在这种情况下只是<td>
带有数字的框)能够捕捉到一些空的表格单元格并捕捉到这些单元格的中心(空的 td 框),而不是那些(外)边缘细胞,这似乎是默认情况下所做的。
这是我的脚本:
<script type="text/javascript">
$(document).ready(function () {
$(".inputs div").draggable( {
snap: ".spaces"
});
});
</script>
编辑:这是整个文件
<!DOCTYPE html>
<head>
<title>Draggable</title>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jquery-ui-1.8.21.custom.min.js"></script>
<script type="text/javascript" src="jquery.ui.touch-punch.min.js"></script>
<style>
.block {
z-index:9999;
cursor:move;
}
li {
list-style:none;
}
tr {
border: 2px solid black;
}
table {
border: 2px solid black;
}
.inputs div {
float:left;
background-color:#FFFFFF;
color:#004E66;
font-size:x-large;
margin:2px;
padding:20px;
border:1px solid black;
}
.spaces td {
background-color:#666666;
margin:2px;
padding:36px;
border:2px solid black;
}
</style>
</head>
<body>
<form id="form1">
<div class="inputs">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</div>
<br/>
<table class="spaces">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</form>
<!-- here we are telling jquery to make each element inside of class 'inputs' draggable -->
<script type="text/javascript">
$(document).ready(function () {
$(".inputs div").draggable( {
snap: ".spaces"
}).center();
});
</script>
这是一个粗略的基于文本的说明,说明正在发生的事情
-----+----------+ XXXXXXXXXXXX X| | | | 是 x| | X| -----+-------+X| | X|
- 如果上面的框是最上面 tr 行右上角的 td 单元格
- 然后 X 是元素当前粘贴的位置(显然它不是那么大,我只是显示它粘贴的地方......实际上我删除了一些 X 以显示它在达到一定的接近度后如何捕捉到角落对它...)
- 基本上这个模型表明只有表格的外部边缘对于可拖动元素具有“重力”。我真正想要它做的是咬入 td 细胞,排斥所有边缘,而不是吸引外部边缘。
- Y 是拖动元素所需的对齐位置。
- 最后,出于演示的原因,我希望元素通过某种过渡而不是突然的跳跃来卡入到位......