JQuery UI 可拖动手动设置位置

JQuery UI draggable set position manually

提问人:Parrotmaster 提问时间:11/9/2023 最后编辑:Parrotmaster 更新时间:11/10/2023 访问量:38

问:

我已将偏移量 X 和 Y 保存到 localstorage 并检索它,然后将其传递给以下内容:

function SetPositionForId(id, posX, posY) {
    $("#" + id).offset({ left: posX, top: posY });
}

我已经确认找到了正确的元素,但我似乎无法手动设置位置。 我尝试设置偏移量、位置(jquery ui)、css(顶部和左侧)。posX 和 posY 的值也是正确的。

可拖动如下:

function MakeDraggableGrid() {
    $('.draggable').draggable({
        containment: "parent",
        grid: [300, 300]
    });
}

这 3 个小部件的当前值为

X 和 Y:582 - 47.59375

X 和 Y:282 - 347.59375

X 和 Y:282 - 647.59375

检查器中显示的 HTML 如下所示:

<div id="WidgetContainer" class="position-relative">
    <div id="d77b5dd4-4436-4c25-ba3b-5425f7d41d04" class="draggable border rounded ui-draggable ui-draggable-handle" style="width: 300px; height: 300px; position: relative;">
        <div class="w-100 h-25 bg-primary p-2 pt-4">
            <h5 class="text-white">Widget #1</h5>
            <button class="btn btn-danger oi oi-x position-absolute align-self-end end-0"></button>
        </div><!--!-->
        <div class="w-100 h-75 bg-light p-2 border-primary">
            <p>eerste</p>
        </div>
    </div>
</div>
jquery jquery-ui

评论

0赞 Twisty 11/10/2023
从你的示例中不清楚你要完成什么。你试过什么?请提供一个最小的可重复示例
0赞 freedomn-m 11/10/2023
您的代码在一定程度上“正常工作”:jsfiddle.net/8ofhLgk0 偏移量 posY/posX 必须与网格位置匹配,否则会破坏网格布局。在小提琴中,我使用了网格 100,100,并且必须将偏移量设置为 109x109。更好的选择是在使用 jquery-ui 拖动时检查您的元素,看看它做了什么,即更改 - 所以使用它: jsfiddle.net/8ofhLgk0/1 没有最小的可重现示例,真的帮不上忙。inset$("#"+id).css("inset", posY + "px auto auto " + posX + "px");
0赞 Parrotmaster 11/10/2023
@freedomn-m,老实说,我不知道我该如何制作一个可重复的例子,这个例子并不大,但对我的情况也很准确。我在 [300,300] JQuery UI 网格上有 Widgets,并将位置存储在 localstorage 中。除了设置位置外,一切都有效。小部件驻留在一个名为 #WidgetContainer 的容器中,仅此而已。
0赞 freedomn-m 11/10/2023
你在我上面的评论中看到两个jsfiddle链接了吗?
0赞 Parrotmaster 11/10/2023
是的。offset 和 Inset 似乎都没有做任何事情。我会将检查器中的 HTML 添加到我的问题中。

答: 暂无答案