我想要一些正方形的可拖动对象(在这种情况下只有<td>
框中包含数字)可以捕捉到一些空的表格单元格并捕捉到这些单元格的中心(空的td框),而不是(外部)边缘这些细胞,这是默认情况下所做的。如何强制jquery在将元素拖动到另一个容器并将其对齐时将元素居中?
这里是我的脚本:
<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>
这里是发生了什么事情
-----+---------+ XXXXXXXXXXX X| | | | Y x| | X| -----+-------+X| | X|
- 的一个粗略的基于文本的说明如果上面的框是topmos右角的td单元格t tr row
- 然后X是元素当前粘贴的地方(显然它不是 大,我只是显示它粘贴的地方......实际上我删除了 一些X来显示它如何对齐角落一旦达到 与它的某种接近度......)
- 基本上这个模型表明只有 表的外部边缘对于可拖动元素具有“引力”。我真正想要它 要做的就是将斥力捕捉到td单元到所有的边缘,而不是 吸引到外部的。
- Y是拖动元素的所需抓取位置。
- 最后呈现的原因,我想元素咬合到位 带有某种过渡,而不是突然跳跃...
您是否希望可拖动的元素在tds内垂直和水平居中?因为他们不适合很好。 – 2012-07-11 05:55:13
4000次阅读。 9正确的答案upvotes。 4在这个问题上。 moochers。登录你的口袋! – 2015-07-30 20:35:38