【问题标题】:What are the jQuery's draggable's true x and y coordinates respective to it's container and siblings?jQuery 的可拖动对象的真实 x 和 y 坐标对应于它的容器和兄弟姐妹是什么?
【发布时间】:2011-02-16 14:30:40
【问题描述】:

我试图找到容器内图像相对于容器和彼此的正确位置,以便提供碰撞检测并做一些其他有用的事情。现在,不要想象有这样的 HTML:

<div id="imagesContainer">
    <div id="image1" ><img src="image1.png" /></div>
    <div id="image2" ><img src="image2.png" /></div>
    <div id="image3" ><img src="image3.png" /></div>
</div>

还有一些关于文档的 JavaScript 代码已准备就绪:

 var positions = {}; // should already contain some x,y pairs of other dragged imagges

 $('#imagesContainer div').draggable({
            cursor: 'crosshair',
            drag: function(event){
                var id = // get the draggable's id
                positions[id].x = //find the x of the draggable
                positions[id].y = //find the y of the draggable
                // do calculations on the positions
            } // drag:
        });

与容器左上角相关的 div 的 x 和 y 坐标的真实或正确值是什么,以及如何设置它们并获取它们以供将来使用(从数据库保存/恢复等) ?

【问题讨论】:

标签: javascript jquery jquery-ui dom draggable


【解决方案1】:

我认为(根据this page)该职位应该可以作为

$('your element').data('draggable').offset

drag 回调中你应该可以做到

$('your element').draggable({
    drag: function(event, ui) {
        //Here you have available ui.position.top and ui.position.left
    }
});

请记住,position 使用相对于父元素的坐标,offset 使用相对于页面的坐标。当然你可以通过加减父坐标(相对于页面)在两者之间进行切换。

至于在数据库中保存和恢复位置,可以使用jQuery的AJAX方法,是完全不同的问题。

【讨论】:

  • 我认为 .position() 和 .offset() 返回值相对于它自己的元素起始位置,所以当我开始从底部向上移动图像时,顶部会变成负数,它不应该,因为它仍在其容器中
  • 嗯,$(this).position() 返回初始坐标,所以你可以添加它们!
  • 我需要的是每个元素相对于它们的父元素和彼此的坐标。返回初始坐标时,它们始终为 (0,0),即使它们测量到拖动的原点。
  • $(this).position() 确实返回相对于其父对象的坐标。这与可拖动行为无关,请参阅api.jquery.com/position 然后您可以将其与 $(this).data('draggable').offset 的结果相加,它测量从初始位置的位移。
猜你喜欢
  • 2017-11-09
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 2019-05-06
相关资源
最近更新 更多