javascript - 在 jquery 中保存可拖动 div 的位置

标签 javascript jquery html css jquery-ui

我的 jsp 中有一些可拖动的 div,我可以将其拖动到整个页面。拖动后有一个保存按钮,单击该按钮我想将网格的位置保存在 cookie 或数据库中,无论哪种解决方案都更好。请建议我该怎么做。下面是我的可拖动代码

<div id="drag">
    <div>
        <div>
            <div>
                This div is draggable
            </div>
        </div>
    </div>
</div>

<script type="text/javascript">
    $(document).ready(function () {
        $('#drag').draggable();
    })
</script>

最佳答案

基本上您想要获取 X/Y 坐标并保存它们。这可以是到本地存储,设置一个 cookie,将它发送到一个 API,没关系。但这就是您获取信息的方式。

<div id="drag">
    <div>
        <div>
            <div>
                <p>This div is draggable</p>
                <button id="saveMe">Save</button>
            </div>
        </div>
    </div>
</div>

<script type="text/javascript">
$(document).ready(function () {
    if (local.get('divOffset')) {
        //check if local storage already has your offset. and set it
        $('#drag').css(local.get('divOffset'))
    }

    $('#drag').draggable();

    $('#drag').on('click', '#saveMe', function () { 
        // we're listening for a click event on the saveMe button
        var $drag = $('#drag'),
        //assigning the #drag div jQ obj to a variable
            offset = $drag.offset(); 
        // grabbing the offset: Object {top: 157.5, left: 150}
        local.set('divOffset', offset);
        //save the offset(local storage)
    });

});

function Local () {
    return {
        set : function (key, obj) {
            localStorage.setItem(key, JSON.stringify(obj));
            return obj;
        },
        get : function (key) {
            var obj = {};
            if (localStorage.getItem(key) !== 'undefined') {
                obj = JSON.parse(localStorage.getItem(key));
            }
            return obj;
        },
        clear : function () {
            localStorage.clear();
            return this;
        },
        remove : function (key) {
            localStorage.removeItem(key);
            return this;
        }
    };
}
var local  = Local();

</script>

通过 API 服务将其保存到数据库的好处是,用户可以从一台计算机转到另一台计算机,他们的信息将保持不变。本地存储只会在一台机器上保持持久性。为了举一个例子,我包含了本地存储,因为保存到 API 涉及更多。

这是我很久以前写的本地存储getter/setter函数。

关于javascript - 在 jquery 中保存可拖动 div 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28689043/

相关文章:

jquery - 如何使用 jquery 'show()' 或 'hide()' 显示/隐藏内容

jquery - 提交我当前使用的表格

javascript - 网站中的一些 html 按钮如何在不调用 JavaScript 函数的情况下执行操作?

javascript - 使用 jquery 获取 span 元素之后的文本,不包括 span 之前的文本

html - CSS曲线波浪背景

javascript - 选中复选框时如何刷新页面的一部分?

javascript - Blade 中的 Laravel JSON 解析问题

javascript - 由 JQuery load() 注入(inject) DIV 的 PHP 文件可以找到有关该 DIV 的任何信息吗?

javascript - d3 在饼图上显示数字而不是百分比

JQuery Ajax API 无法读取属性错误