javascript - 获取多个元素的位置

标签 javascript jquery position draggable each

我正在尝试使用 jQuery 的 .position 和 .each 函数获取多个可拖动元素的单独位置。

这就是我到目前为止所拥有的......

JS

function newAppDraggable() {
    $('.App').draggable({
        containment: "#AppBox",
        grid: [ 60, 60 ],
        stack: ".App"
    });
};

$(function() {
    $('.AppList').droppable({
        accept: ".App",
        tolerance: 'fit',
        drop: function(event, ui) {
            $(".App").each(function( index ) {
            var position = $(this).position();
            var posTop = position.top;
            var posLeft = position.left;
            $( "#posThis" ).html(index+":"+posTop+":"+posLeft);
            });
        }
    });
});

HTML

<div class="AppList">
    <div id="TimenDate" class="App Fixed Size110x350">
    </div>

    <div id="User" class="App Fixed Size110x290">
    <p id="posThis"></p>
    </div>

    <div id="Weather" class="App Fixed Size110x350">
    </div>
</div>

这是一个fiddle为了更好的解释。在 fiddle 上,索引保持在 2,并且位置仅在移动第三个应用程序时发生变化。

我想要的是能够获取所有单独应用程序的位置,并可能将它们保存在 cookie(或类似的东西)中的数组中,以便我可以在页面打开时将它们重新加载到最后的位置已刷新。

最佳答案

在普通 JavaScript 和支持 element.getBoundingClientRect 的现代浏览器中

以下两个示例均经过修改,以演示如何将每个元素获得的位置添加到数组中,以便稍后访问。

您可以通过此技术获取位置信息。

var apps = document.querySelectorAll(".App"),
    positions = [];

Array.prototype.forEach.call(apps, function (app, index) {
    var positionInfo = app.getBoundingClientRect();

    positions.push(positionInfo);
    console.log(index + ":" + positionInfo.top + ":" + positionInfo.left);
});

console.log(positions);

关于jsfiddle

在上面的示例中,浏览器还必须支持 Array.forEachdocument.querySelectorAll

使用jquery,会是这样的,使用jQuery selectors , jQuery.eachjQuery.position

var apps = $(".App"),
    positions = [];

$.each(apps, function (index, app) {
    var positionInfo = $(app).position();

    positions.push(positionInfo);
    console.log(index + ":" + positionInfo.top + ":" + positionInfo.left);
});

console.log(positions);

关于 jsfiddle

关于javascript - 获取多个元素的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241834/

相关文章:

jquery - 通过隐藏 : good idea? 在 html 中包含数据节点

css - 以相对方式绝对定位一个部门

javascript - 将 json 数据从一个页面显示到新重定向的页面

javascript - 解释一下可滚动表格的代码

javascript - 预加载字体和图像?

javascript - 如何从 <table><tr><td></td></tr></table> 获取特定的 HTML 控件并将所选控件附加到同一个 <td> 中?

swift - 快速生成负数和正数之间的随机数

c++ - 使用 OpenGL 在 SFML 中获取正确的鼠标位置

javascript - jQuery 根据用户输入从数组中获取值

javascript - Nextjs 静态文件 CORS 问题 - 导致链接在版本 10.1.4 上中断