gpt4 book ai didi

php - 如何使用dragula js动态拖放

转载 作者:行者123 更新时间:2023-12-01 02:53:33 24 4
gpt4 key购买 nike

我正在尝试使用 Dragula js 创建一个部分,如下所示:

http://bevacqua.github.io/dragula/

我想要的是,拖放应该是动态的。因此,每次拖放时,应保存每个元素的位置。我怎样才能做到这一点?

我知道可以用 php 和 ajax 来完成。但不知道如何操纵位置

最佳答案

这个问题可以分为两个不同的问题。

  1. 如何跟踪元素的顺序?

据我所知,dragula 没有跟踪元素位置的概念。您必须设计一种方法来识别父容器和可拖动项目元素。 (示例中的 div)。如果您需要动态创建父容器,您还需要跟踪它们的顺序。如果您有预定义的布局,那么您所需要做的就是跟踪元素顺序以及它们所属的父级。 (例如,如果我们使用拖古拉示例,则为左或右)。

为每个可拖动元素创建一个 id。你将会得到这样的东西。

<div id="left">
<div id="element1">Some text</div>
<div id="element2">Some other text</div>
</div>

当一个元素被删除时,您将需要捕获被删除的元素及其对父容器的顺序。为此,您可以使用 jQuery 索引函数来查找相对于父容器的新索引。然后,您需要将列表重新排序,因为您将其保存在服务器端。

draggableElements.on('drop',function(el)
{
var parentElId = $(el).parent().attr('id');
var droppedElIndex = $(el).index();
var droppedElId = $(el).attr('id');
$.ajax({
url: "itemDropped.php",
type: 'GET',
data: { parentIdParam: parentElId,
droppedIndexParam: droppedElIndex,
droppedIdParam: droppedElId }
}).done(function() {
//do something else
});
});
  • 如何保存元素的顺序?
  • 这取决于您的要求。如果要将层次结构保存到数据库,则需要保存每个元素的父容器 ID、其所在的顺序或位置以及元素 ID。

    要按照元素放入的顺序重新渲染页面,您只需循环每个容器中的所有元素并按照保存的顺序渲染它们。

    关于php - 如何使用dragula js动态拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34016564/

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