gpt4 book ai didi

javascript - Jquery 增加可放置捕捉阈值并在无法发生捕捉时重置其位置

转载 作者:行者123 更新时间:2023-12-03 05:11:41 24 4
gpt4 key购买 nike

我有这些 div,其中两个可以通过按扣拖动,两个可以放置。

我找不到或想出一种方法来执行以下操作:

  • 使两个可拖动 div 和两个可放置 div 的行为相同,而无需大量复制粘贴代码。

  • 将捕捉阈值增加到可拖动 div 自动移动到位的点。

  • 如果可拖动 div 放置在可放置 div 内部太小,则需要将其重置到上次捕捉的位置。\

我只是一个初学者,所以如果我的帖子中有任何错误,请告诉我,以便我可以编辑它并从中学习。

<html>
<head>
<link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css"
rel = "stylesheet">
<script src = "https://code.jquery.com/jquery-1.10.2.js"></script>
<script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>

<style>
#destination {
width: 150px;
height: 150px;
background-color: red;
}

#draggable { width: 150px; height: 150px; background:#eee;}

</style>

<script>
$(function() {
$( "#draggable" ).draggable({ snap: "#destination" });
$( "#destination" ).droppable();
});
</script>
</head>

<body>
<div id="destination">
destination
</div>


<div id = "draggable">
<p>Drag me !!!</p>
</div>

<div id="destination">
destination
</div>

<div id = "draggable">
<p>Drag me !!!</p>
</div>

</body>
</html>

最佳答案

你可以这样做。

分别为可拖动目标和可放置目标设置相同的属性,以避免复制和粘贴。

使用snapMode: 'inner'使可拖动的div自动移动到位。 snapTolerance 可以更改阈值。

最后,revert:'invalid' 表示如果将可拖动 div 放置在可放置 div 内的较小位置,则可拖动 div 将恢复到最后位置。

如果你想让draggable1与droppable1配对,你可以添加另一个属性并将accept选项传递给droppable()初始化函数。

<html>
<head>
<link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css"
rel = "stylesheet">
<script src = "https://code.jquery.com/jquery-1.10.2.js"></script>
<script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>

<style>
[data-action='droppable'] {
width: 150px;
height: 150px;
background-color: red;
}

[data-action='draggable'] { width: 150px; height: 150px; background:#eee;}

</style>

<script>
$(function() {
$( "[data-action='draggable']" ).draggable({
snap: "[data-action='droppable']",
snapMode: 'inner',
snapTolerance: 50,
revert: 'invalid'
});
$( "[data-action='droppable']" ).droppable({
accept: function(dragTarget) {
return $(this).attr('data-pair') === $(dragTarget).attr('data-pair');
}
});
});
</script>
</head>

<body>
<div id= "destination1" data-action='droppable' data-pair='1'>
destination1
</div>


<div id = "draggable1" data-action='draggable' data-pair='1'>
<p>Drag me1 !!!</p>
</div>

<div id= "destination2" data-action='droppable' data-pair='2'>
destination2
</div>

<div id = "draggable2" data-action='draggable' data-pair='2'>
<p>Drag me2 !!!</p>
</div>

</body>
</html>

关于javascript - Jquery 增加可放置捕捉阈值并在无法发生捕捉时重置其位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41790420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com