Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui Jquery UI是否可以拖动绝对值而不是相对值?_Jquery Ui_Jquery Ui Draggable - Fatal编程技术网

Jquery ui Jquery UI是否可以拖动绝对值而不是相对值?

Jquery ui Jquery UI是否可以拖动绝对值而不是相对值?,jquery-ui,jquery-ui-draggable,Jquery Ui,Jquery Ui Draggable,我有一个div,其中包含一些jquery draggables,但是,如果在任何时候我从页面中删除其中一个draggables,那么这可以移动其余的draggables,因为它们是用relative定位的 这是一把小提琴,展示了这一点: 我建议的解决方案是,拖拽设备应该使用绝对定位,而不是相对定位,但是我找不到一种方法来做到这一点。有办法做到这一点吗?如果没有,有人能想出一个解决办法吗?(为了优雅起见,我不会接受“不要删除另一个拖拉表”)。为什么不适合你 由于绝对定位元素不再是文档流的一部分,

我有一个div,其中包含一些jquery draggables,但是,如果在任何时候我从页面中删除其中一个draggables,那么这可以移动其余的draggables,因为它们是用relative定位的

这是一把小提琴,展示了这一点:

我建议的解决方案是,拖拽设备应该使用绝对定位,而不是相对定位,但是我找不到一种方法来做到这一点。有办法做到这一点吗?如果没有,有人能想出一个解决办法吗?(为了优雅起见,我不会接受“不要删除另一个拖拉表”)。

为什么不适合你


由于绝对定位元素不再是文档流的一部分,因此三个
元素中的每一个都位于其包含(定位)元素的
0,0
。因此,这取决于你。

也许不是最好的主意,但。。。您可以使用position:relative定位所有相关div;然后在or$(“document”).ready()中包含一个函数调用,如果您使用的是jQuery,它会迭代每个div,将它们的相对位置转换为绝对位置,并将它们设置为左上方,然后再将它们更改为position:absolute。这里唯一的问题是,您希望每个div在更新其样式之前都处于绝对位置,这样就不会通过迭代改变布局

  • position:absolute
    添加到元素中
  • 在调用
    .draggable
    之前将它们附加到DOM

  • 在将元素设置为可拖动时,可以使用jQuery css函数将位置设置为绝对位置

    $(this).draggable().css("position", "absolute");
    

    @挥发物形态:不,它没有。查看我的使用
    位置:绝对
    ——它从未更改为
    相对
    。是的。这就是我删除评论的原因。可以说,这是在我的“生产代码”中。但不是你的。然而。如果我在使其可拖动后将位置设置为绝对,那么它将保持绝对。我想我应该更努力一点,哈哈。谢谢为了澄清这个场景,如果您通过css/inline将可拖动元素的位置设置为
    绝对
    ,那么可拖动插件不会为您将其内联设置为
    相对
    ,您可以确定(或不确定)起始位置(有助于动态生成的元素)。但是,不要通过css以
    .ui draggable
    为目标,因为该选择器似乎是在它决定是否应用定位后添加的。要添加的另一件事:当父容器设置为
    位置:static
    时,它会使父容器停止滚动。要重新启用滚动,只需将其设置为
    position:absolute
    注意,如果他使用的是参数iframeFix:true,那么jqueryui将其转换为保存我的一天之前的相对位置。谢谢。将“位置”设置为“绝对”后,就不能再拖动了